gpt4 book ai didi

objective-c - 如何为 ivar 编写我自己的 setter,即 : self. ivar = ...?

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:50 28 4
gpt4 key购买 nike

这是后续问题:Difference between self.ivar and ivar? :

self.name = @"hello";

我想知道神奇 setter 方法内部做了什么。所以问题是:任何人都可以发布 setter 方法的源代码吗? ;-) 谢谢!

最佳答案

如果没有属性声明(也就是说,您手动声明了 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

原子 setter 可能看起来像这样:

- (void) setName:(NSString *) aName
{
@synchronized(self)
{
if (aName != name)
{
[name release];
name = [aName retain];
}
}
}

关于objective-c - 如何为 ivar 编写我自己的 setter,即 : self. ivar = ...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4150967/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com