这是一个后续问题:Difference between self.ivar and ivar?:
self.name = @"hello";
我想知道在魔法 setter方法中做了什么。所以问题是:有人可以发布setter方法的源代码吗? ;-)谢谢!
答案 0 :(得分:11)
没有属性声明(也就是说,你手动声明了setter和getter方法),你通常会像这样实现它们:
@interface MyClass : NSObject
{
NSString *name;
}
- (NSString *) name;
- (void) setName:(NSString *) name;
@end
@implementation MyClass
- (void) dealloc
{
[name release];
[super dealloc];
}
- (NSString *) name
{
return name;
}
- (void) setName:(NSString *) aName
{
if (aName != name)
{
[name release];
name = [aName retain];
}
}
@end
Atomic setters看起来像这样:
- (void) setName:(NSString *) aName
{
@synchronized(self)
{
if (aName != name)
{
[name release];
name = [aName retain];
}
}
}
答案 1 :(得分:3)