在 Modern Objective-C 运行时中,您可以执行以下操作:
@interface MyClass : NSObject {
}
@property NSString *stringProperty;
@end
@implementation MyClass
@synthesize stringProperty;
@end
这是我对现代运行时的理解,这不仅会合成我的属性的访问器,还会合成实例变量本身,所以我可以在这个类的方法之一中[stringProperty length];
说它就像我声明了一个实例一样工作多变的。
我现在已经开始在我的所有代码中使用它,因为,这是我必须一遍又一遍地编写的东西。而且我听说过使用 clang 2.0 编译器,我什至可以跳过@synthesize
(但那是另一回事)。但我一直在想,这样做有什么缺点?除了我的属性之外,我什么时候真正需要一个实例变量?
我知道有时我想保持一个变量私有而不是从外部访问它(但是我通常只是在我的私有类扩展中声明该属性,或者我根本不为它创建一个属性,如果我不需要访问器)。
有没有什么时候我不想这样做?