Iphone Objective-c中的动态对象属性
如何在objective-c中创建对象的动态属性? 在ActionScript中,我们可以这样做Iphone Objective-c中的动态对象属性,iphone,objective-c,Iphone,Objective C,如何在objective-c中创建对象的动态属性? 在ActionScript中,我们可以这样做 var obj : Object; obj[ "myDynamicProperty" ] = true; trace( obj.myDynamicProperty ); 在objective-c中我将如何做到这一点 我试过以下方法 NSObject *obj = [[NSObject alloc] init]; [obj setValue:@"labelValue" forKey:@"label"
var obj : Object;
obj[ "myDynamicProperty" ] = true;
trace( obj.myDynamicProperty );
在objective-c中我将如何做到这一点
我试过以下方法
NSObject *obj = [[NSObject alloc] init];
[obj setValue:@"labelValue" forKey:@"label"];
但这只是抛出了一个运行时错误。
任何帮助都将不胜感激。
提前感谢。
对象NSObjects
,具体在Objective-C
中,不允许使用KVC对其设置任意属性;也就是说,它们不是键值容器。如果您想要能够接受任意键值对的内容,请使用字典(NSMutableDictionary
)
如果您可以轻松地下拉到Obj-C
运行时,也可以使用关联对象API。在文档中搜索objc\u setassociated object
,查看如何使用此API
如果您需要自定义行为以及任意属性,则可以创建对象。创建自己的自定义类,其中包含一个NSMutableDictionary
实例变量,然后编写自己的方法,只需在该内部字典上调用setValue:forKey:
等等。Objective-C中的对象通常不会以这种方式工作。这是可能的,但求助于运行时函数是很尴尬的,而且通常不是惯用的。如果需要任意键值存储,请使用NSMutableDictionary
一般来说,在Objective-C中这是一个很好的实践,因此每个对象都有一组固定的属性,而不是像ActionScript/Javascript中有时那样将它们附加到临时属性上