Objc 代码找不到 swift 中定义的 Bool 变量
Posted
技术标签:
【中文标题】Objc 代码找不到 swift 中定义的 Bool 变量【英文标题】:Objc code cannot find Bool variable defined in swift 【发布时间】:2014-11-08 02:58:34 【问题描述】:我在一个 Swift 文件中定义了一个 var,但是在另一个 Objective-C 文件中,当我尝试设置这个 var 时,编译器抱怨它找不到该 var。我该如何解决这个问题?这是代码: 迅速:
var isCreating: Bool!
在 objc 中:
SelectMemberViewController *ctrl = [[SelectMemberViewController alloc]init];
ctrl.isCreating = YES
然后编译器抱怨:在“SelectMemberViewController”类型的对象上找不到属性“isCreating”
【问题讨论】:
它在框架中吗?你在课堂上测试过其他功能吗?如果它在框架中,则需要将其声明为公共的。 太模糊了。显示 Swift 中的实际声明、Objective-C 文件中的实际调用以及实际的编译器消息。 @chrisco 我从不声明任何“公共”类型的东西,似乎 swift 类中的 vars 或 vals 是默认可访问的,只要您持有该对象,对吗? 【参考方案1】:问题是在 Objective-C 的世界中没有任何东西对应于 Bool!
。因此,这个声明不会暴露给 Objective-C。如果您希望 Objective-C 能够看到它,则需要将其声明为普通的 Bool
。
【讨论】:
是的,解决了,谢谢,是不是因为objc中的Bool是原语,所以不对应任何可选类型? 是的。或者从 Swift 的术语来看,它不是 AnyObject,在 ObjectiveC 中只有 AnyObject 可以为 nil(一个 id)。 var isCreating: Bool = false。最初的第一次是修复它。以上是关于Objc 代码找不到 swift 中定义的 Bool 变量的主要内容,如果未能解决你的问题,请参考以下文章
可以在 Obj C 中链接,找不到符号,也不会在 Swift 中链接
Swift & ObjC 桥 - 找不到“WKNavigationDelegate”的协议声明
dyld:找不到符号:尝试在iOS7上运行时_OBJC_CLASS_$_UIUserNotificationSettings [重复]
归档应用程序时找不到 Swift Objective-C 标头