@interface RandomObject : NSObject
{
NSString* someObject; // I know I don't have to explicitly declare. Just to clarify my point.
}
@property (nonatomic, strong) NSString *someObject;
@end
@implementation RandomObject
@synthesize someObject;
@end
鉴于上面的代码并使用了 Xcode 4.3(因此,没有自动合成),这是我的问题。
property/synthesize 将为 someObject 创建访问器,即 getter 和 setter。所以如果我想给 someObject 赋值,我可以这样做。
self.someObject = @"Tomato"; // [self setSomeObject: @"Tomato"];
如果我的理解是正确的,self 会将 @"Tomato" 发送给 setSomeObject 方法。但是如果你这样做呢?
someObject = @"Tomato"; // or maybe _someObject = @"Tomato" if you are doing auto-synthesizing
直接访问 iVar 对象似乎是个坏主意,但由于 someObject 是私有变量,因此在同一个类中您可以访问它,对吗?
我理解如果您想从另一个类操作 someObject ,为什么需要使用 self.someOject 。但是为什么即使你还在同一个班级,你也需要做同样的事情。为什么直接访问 iVar 是个坏主意。