具有“iboutlet”属性的属性必须是对象类型(无效的“BOOL”(又名“签名字符”))
Posted
技术标签:
【中文标题】具有“iboutlet”属性的属性必须是对象类型(无效的“BOOL”(又名“签名字符”))【英文标题】:Property with 'iboutlet' attribute must be an object type (invalid 'BOOL' (aka 'signed char')) 【发布时间】:2012-06-24 09:08:50 【问题描述】:将我的项目更新到 10.7 SDK 并切换调试器后, 我收到了这条消息:
Property with 'iboutlet' attribute must be an object type (invalid 'BOOL' (aka 'signed char'))
在更新之前它运行良好。 有关如何解决此问题的任何提示?
【问题讨论】:
【参考方案1】:你必须导入地图框架(MapKit/MapKit.h)
#import <MapKit/MapKit.h>
【讨论】:
【参考方案2】:如果您为组件使用自定义类(即从 UI* 子类化),请记住您需要为您的类导入 .h 文件,这样您的属性指针就不仅仅是编译器的 (id)。
【讨论】:
你说得对,我正在使用#import "BOValidationTextField.h"。我已经在课堂上导入了这个 .h 文件。【参考方案3】:尝试取消链接并再次链接 IBOutlet,或尝试将 boolValue
分配给持有该对象的变量。
据我所知,使用新的 SDK,许多东西都已被弃用,并且无法正常工作。这就是为什么我讨厌使用测试版!
【讨论】:
【参考方案4】:IBOutlets 总是对象,它们是在 xibs/nibs 中引用的值,你不能用标量值真正做到这一点。如果您需要设置布尔值,那么您可以在对象的 -awakeFromNib 方法中调用 setter,或者根据您正在执行的操作:kvo 或委托可能是合适的。
【讨论】:
以上是关于具有“iboutlet”属性的属性必须是对象类型(无效的“BOOL”(又名“签名字符”))的主要内容,如果未能解决你的问题,请参考以下文章
如何解决这个错误? “具有‘保留(或强)’属性的属性必须是对象类型”
类型提示。如何暗示传递给函数的对象必须具有某种方法/属性访问权限?
Javascript 在原型中设置具有值类型的对象属性? [关闭]
是否可以在不声明 IBOutlet 属性的情况下访问 IB 对象(例如 UILabel)?