답변

48

@weichsel이 정확하지만, 더 나은 방법이있다.

사용 :

[anObject valueForKey: @"propertyName"]; 

과 분명히

[anObject setValue:value forKey:@"propertyName"]; 

, @"propertyName" 동적 런타임에 구성되는 NSString이 될 수 있습니다.

이 기술은 Key Value Coding이라고하며 코코아의 기본입니다.

-valueForKey은 속성이 개체에 반환하는 모든 형식을 "상자에 넣으려면"필요한 작업을 수행하기 때문에 더 좋은 이유는 무엇입니까? 따라서 속성이 int 인 경우 int를 포함하는 NSNumber 인스턴스를 반환합니다.

이 처리하는 것이 훨씬 쉽다 - performSelector 것이다 메모리의 포인터의 가치에 맞게 일어날 유형에만 작동합니다.

또한 -setValue:forKey:입니다.

+0

매우 편리합니다! 그걸 몰랐어. –

2

@synthesize propertyName은 getter 및 setter 메소드의 생성을 자동화합니다. 당신이있는 NSString으로 선택이있는 경우, performSelector:NSSelectorFromString을 사용할 수 있습니다

컴파일러는

  • - (id)propertyName;
  • - (void)setPropertyName;

를 생성합니다.
예컨대 :
[object performSelector:NSSelectorFromString(@"propertyName") ...]

+1

속성을 설정하려면'performSelector : withObject :'를 사용해야합니다. –