我想identifier
在接口构建器中对一些约束设置属性。我以前User Defined Runtime Attributes
在NSView
实例中使用过IB中的表,没有任何问题,但是对于约束类,我做的事情完全相同。当我尝试使用代码访问标识符时,它仅返回null,而不是我在表的Value栏中输入的字符串。我想这可能与xib加载机制有关,但我希望有人能够确定地说出问题所在。
IB --> Identity Inspector --> User Defined Runtime Attributes
:
稍后的IBAction
方法:
NSLog(@"%@", self.widthCon.identifier);
// --> (null)
NSLayoutConstraint实现似乎基本存在问题。在NSLayoutConstraint上创建一个Category并覆盖一些用于调试目的的方法,结果如下:
由于以下原因,必须在编译期间通过Xcode剥离运行时属性:
被覆盖的KVC方法NSLayoutCategory内setValue:forKey:
,setValue:forKeyPath:
并且setValue:undefinedKey:
永远不会获取调用。
覆盖的方法setIdentifier:
将被调用,但从接收不到运行时属性部分传递的值
提供无效键不会像在其他任何对象(例如NSView)上那样产生错误。
2014-03-19 08:25:52.806 LayoutTestApp [13733:303] [setValue:forUndefinedKey:]:此类不符合键testKey的编码键值。
此外,在Xcode中也可以忽略在NSLayoutConstraint上设置自定义类(永远不会调用自定义类的init方法)。看起来Apple禁用了NSLayoutConstraints的运行时属性和自定义类功能,或者只是一个错误。两种方式:通过运行时属性设置标识符很可能无法在atm上正常工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句