访问无法修改的父类扩展中定义的Obj-C属性

时间:2012-09-13 09:05:21

标签: iphone objective-c ios xcode ipad

假设您的父类是,例如MyClass.m

@interface MyClass()
  @property (nonatomic, readwrite, retain) NSString * str;
@end

您继承此课程并希望修改str的值,是否可以不触及MyClass.mMyClass.h

感谢。

1 个答案:

答案 0 :(得分:1)

是的,你可以,只需使用KVC:

 [anObject setValue:@"foo" forKey:@"str"];
 NSString* x =[anObject valueForKey:@"str"];

不要这样做。该属性在*.h的公共接口中隐藏,因为父类的开发人员想要隐藏它。

最终,父类的开发人员可能会停止使用该属性。然后,使用此属性的代码将崩溃。

所以,不要这样做。