1

重複の可能性:
Objective-C でプロパティの戻り値の型を検出する方法

Objective-Cでプロパティのタイプを取得する方法はありますか? 次のようにプロパティにアクセスできます。

objc_property_t* properties = class_copyPropertyList(cl, &count);

そして、次のように名前を取得します。

property_getName(properties[i]);

私がする必要があるのは、型を取得することです。また、値はnilほとんどの場合になるため、呼び出して値を取得することはできませんobject_getClass()

4

1 に答える 1

4

あなたが求めているように見えるという意味ではありません—Objective-Cのクラスはタイプレスです。「それはクラスです」以外の非Cタイプを処理する場合、プロパティのタイプは実行時に認識されません。そのため、ViewControllerで次のようなばかげたことをすると次のようになります。

[self setValue:@3 forKey:@"view"];

NSNumberビューではないものを不適切なプロパティに入れようとしたために、コントローラーがキー値コーディングメカニズムではなくビューメッセージを送信しようとすると、例外が発生します。

解析property_getAttributesにより、さまざまなCリテラルタイプをObjective-Cオブジェクトタイプと区別するだけで済みます。

于 2012-12-07T23:02:29.567 に答える