gpt4 book ai didi

objective-c - 使用@synthesize 时如何提供访问器方法的额外自定义实现?

转载 作者:太空狗 更新时间:2023-10-30 03:44:48 25 4
gpt4 key购买 nike

我想在访问和更改属性时触发一些代码。我在我的 ivar 代码中使用了 @property@synthesize。属性被保留,所以我想保留由 @synthesize 自动生成的内存管理内容。

但是,我假设 @synthesize 告诉编译器在 @synthesize 所在的地方生成访问器方法代码,所以大多数情况都在代码的顶部,对吧?

当我有一个属性 foo 时,我得到了 -setFoo-foo 方法。然后我可以只创建一个这样的方法,以便在更改属性时执行更多自定义代码吗?

-(void)setFoo {
// custom stuff
}

现在这是一个问题。如何执行第一个?我不想在这里有一个不同的名字。有没有办法让 @synthesize 指令为 getter 和 setter 方法创建其他名称,然后我可以轻松调用它们?然后我仍然可以使用点语法来访问它们吗?

最佳答案

您可以像往常一样使用 @property@synthesize,但提供自定义的 setter 或 getter(或两者),它们将被使用。通常我会做这样的事情:

// Override the setter
- (void)setName:(NSString *)aName
{
if (name == aName)
return;

[name release];
name = [aName retain];

//custom code here
}

当我使用 set 属性时,它将调用我的自定义方法。但是get还是会被合成。

关于objective-c - 使用@synthesize 时如何提供访问器方法的额外自定义实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1306897/

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