public init(userID: Int!) { self.init(style: UItableVIEwStyle.Plain) self.userID = userID}
我甚至尝试使用@objc(initWithUserID :)并且我再次遇到同样的错误.还有什么我想念的吗?如何让Objective-C代码可以看到构造函数?
我为此阅读了以下内容:
https://developer.apple.com/library/ios/documentation/swift/conceptual/swift_programming_language/Initialization.html
https://developer.apple.com/library/ios/documentation/swift/conceptual/buildingcocoaapps/interactingwithobjective-capis.html
How to write Init method in Swift
How to define optional methods in Swift protocol?
你看到的问题是Swift无法桥接可选的值类型 – Int是一个值类型,所以Int!无法弥合.可选的引用类型(即任何类)正确桥接,因为它们在Objective-C中始终为nil.您的两个选项是使参数非可选,在这种情况下,它将作为int或NSInteger桥接到ObjC:// Swiftpublic init(userID: Int) { self.init(style: UItableVIEwStyle.Plain) self.userID = userID}// ObjCMyClass *instance = [[MyClass alloc] initWithUserID: 10];
或者使用可选的NSNumber !,因为它可以作为可选的桥接:
// Swiftpublic init(userID: NSNumber!) { self.init(style: UItableVIEwStyle.Plain) self.userID = userID?.integerValue}// ObjCMyClass *instance = [[MyClass alloc] initWithUserID: @10]; // note the @-literal
但是请注意,您实际上并没有将参数视为可选参数 – 除非self.userID也是一个可选参数,您可以通过这种方式设置自己的潜在运行时崩溃.
总结以上是内存溢出为你收集整理的swift init在objective-C中不可见全部内容,希望文章能够帮你解决swift init在objective-C中不可见所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)