myp*_*unt 2 methods class objective-c swift
目前我需要在 Objective-c 代码中使用我的 Swift 全局变量。这些是我的变量:
public var Name = [String]()
public var Author = [String]()
public var Url = [String]()
Run Code Online (Sandbox Code Playgroud)
这是一个返回我的公共变量的类:
@objc class AppConstant: NSObject {
private override init() {}
class func name() -> [String] { return Name }
class func author() -> [String] { return Author}
class func url() -> [String] { return Url}
}
Run Code Online (Sandbox Code Playgroud)
我的Objective-C代码:
@implementation SecondViewController
NSArray *urlArray;
NSArray *nameArray;
NSArray *authorArray;
- (void)viewDidLoad {
[super viewDidLoad];
urlArray = [AppConstant url];
nameArray = [AppConstant name];
authorArray = [AppConstant author];
}
@end
Run Code Online (Sandbox Code Playgroud)
我认为一切都应该没问题,但它返回错误
选择器 'url'/'name'/'author' 没有已知的类方法。
有人可以解释错误在哪里。我做了这里解释的一切,但它不起作用。希望有人能帮助我
先感谢您!
您需要@objc添加到任何您希望公开给 Objective-C 的属性或方法。
@objc class AppConstant: NSObject {
private override init() {}
@objc class func name() -> [String] { return Name }
@objc class func author() -> [String] { return Author}
@objc class func url() -> [String] { return Url}
}
Run Code Online (Sandbox Code Playgroud)
或者,@objcMembers如果要公开所有非私有属性和方法,可以使用:
@objcMembers class AppConstant: NSObject {
private override init() {}
class func name() -> [String] { return Name }
class func author() -> [String] { return Author}
class func url() -> [String] { return Url}
}
Run Code Online (Sandbox Code Playgroud)
这是 Swift 4 与 Swift 3 的变化。请注意,您链接的旧问题已有 4 年历史。从那时起,Swift 发生了很大的变化。
| 归档时间: |
|
| 查看次数: |
1029 次 |
| 最近记录: |