Xcode 8 Objective-C category warning Xcode 8 Objective-C category warning swift swift

Xcode 8 Objective-C category warning


I also had this issue in a UIColor extension, my app is entirely made with swift except for some frameworks that use Objective-c so I have no problem in declaring the var as @nonobjc:

extension UIColor {   @nonobjc static var lol: UIColor {      return UIColor.red   }}

From the apple docs:

The nonobjc attribute tells the compiler to make the declaration unavailable in Objective-C code...

Since this code is unavailable to Objective-C the warning disappears.


In my case, the reason was having computed type property in an extension:

extension NSParagraphStyle {    class var defaultStyle: NSParagraphStyle {        return ...    }}

Not sure what the exact reason behind this is, but to get rid of the warning I had to convert the computed type property (class var) to a type method (class func):

extension NSParagraphStyle {    class func defaultStyle() -> NSParagraphStyle {        return ...    }}


This warning appeared in my project after adding a framework that used Objective-C in my application that otherwise used Swift 3 entirely.

By declaring all static functions and static variables in all extensions as @nonobjc this warning went away.

For example

extension Notification.Name {    @nonobjc static let MyNotificationName = Notification.Name("NNSongFavoriteStatusDidChangeNotification")}

or

extension UIColor {    @nonobjc static let superGiantRed = UIColor(red: 180.0/255.0, green: 40.0/255.0, blue: 27.0/255.0, alpha: 1.0)}