2
ABC *abc=[ABC new];
id property=abc.property;

しかし:

id ClassName=NSClassFromString(ABC);
id instance=[ClassName new];

id property=???????;

id型なのでinstance.propertyは使えません。

(id)type クラスから既知のプロパティを取得したい。

私は使用しようとします:

[aInstanse propertyForKey:<#(NSString *)#>];
[aInstanse propertyNamed:<#(NSString *)#>];

しかし、プログラムがクラッシュします...

助けてくれませんか、ありがとう。

4

3 に答える 3

8

多くの方法があります

コンパイル時に型がわかっている場合はキャストできます

id property=((MyClass *)instance).myProperty;
((MyClass *)instance).myProperty = property;

またはドット構文を使用しない

id property=[instance myProperty];
[instance setMyProperty:property];

または使用してvalueForKey:

id property=[instance valueForKey:@"myProperty"];
[instance setValue:property forKey:@"myProperty"];
于 2013-05-21T02:50:45.067 に答える
0

標準の getter と setter を使用するだけで、デフォルト プロパティに次のもの@synthesizeが作成されます。

[instance property];
[instance setProperty:value];
于 2013-05-21T02:44:18.760 に答える
0

クラスにいくつかのプロパティがあり、このプロパティの名前がわかっている場合は、それを呼び出すインターフェイスを作成できます。もちろん、オブジェクトをこのクラスのオブジェクトにキャストする必要があります!

幸運を!

于 2013-05-21T02:52:59.943 に答える