这是一个后续问题:self.ivar和ivar之间的区别?:
self.name = @"hello";
Run Code Online (Sandbox Code Playgroud)
我想知道在神奇的 setter方法中做了什么.所以问题是:有人可以发布setter方法的源代码吗?;-) 谢谢!
dre*_*lax 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
Run Code Online (Sandbox Code Playgroud)
原子设置器看起来像这样:
- (void) setName:(NSString *) aName
{
@synchronized(self)
{
if (aName != name)
{
[name release];
name = [aName retain];
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2866 次 |
| 最近记录: |