先日NSObjectを継承するクラスのextensionでクラス変数を定義したら表題のエラーに遭遇しました。
class A: NSObject {} extension A { static var hiddenCalendarIds = [""] }
@nonobjcをつければエラーは出なくなりました。
class A: NSObject {} extension A { @nonobjc static var hiddenCalendarIds = [""] }
@nonobjcとは
Objective-cから該当のプロパティーやメソッドを呼べなくする修飾子です。
class A: NSObject {} extension A { @nonobjc func method() {} }
@interface : NSObject @end @implementation Objc - (void)method { [[A new] method]; // → No visible @interface for 'A' declares the selector 'method'エラーになる } @end