プロパティを定義する際に、上記の構文に対応する名前を使用
@property (assign, getter=hasProp) BOOL prop;
まず、プロパティ名の最初の文字を大文字にする必要があります。
NSString *capitalizedProperty = [NSString stringWithFormat:@"%@%@", [[propertyName substringToIndex:1] uppercaseString], [propertyName substringFromIndex:1]];
次に、プロパティを設定するセレクタを作成する必要があります。 (あなたは、デフォルトで「foo」という呼ばれる性質を持っている場合は、このプロパティのセッターが「setFoo:」と呼ばれます。)
SEL propertySetter = NSSelectorFromString([NSString stringWithFormat:@"set%@:",capitalizedProperty]);
はその後セルジオの答えのように、呼び出し:
if ([object respondsToSelector:propertySetter])
{
[object setValue:value forKey:propertyName];
}
チェックthis postオブジェクトのプロパティを取得する方法を参照してください。
プロパティはゲッターとセッターに異なるメソッドを定義する可能性があるため、必ずしも有効ではありません。 –
'@property(assign、getter = isOpen)BOOL open;' - 共通パターン – bshirley
@Jonathan Grynspan:あなたの発言に感謝します。私はより正確にあなたの洞察力を含めるために私の答えを編集! – sergio