Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone Objective-c中的动态对象属性_Iphone_Objective C - Fatal编程技术网

Iphone Objective-c中的动态对象属性

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"

如何在objective-c中创建对象的动态属性? 在ActionScript中,我们可以这样做

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中有时那样将它们附加到临时属性上