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

objective-c – 如何在使用@synthesize时提供其他自定义的访问器方法实现?,第1张

概述我想在访问和更改属性时触发一些代码.我在我的代码中使用@property和@synthesize来获取我的ivars.属性被保留,所以我想保留由@synthesize自动生成的内存管理内容. 但是,我假设@synthesize告诉编译器在@synthesize所在的位置生成访问器方法代码,因此大多数情况都在代码的顶部,对吧? 当我有一个属性foo时,我得到-setFoo和-foo方法.那么我可以制 我想在访问和更改属性时触发一些代码.我在我的代码中使用@property和@synthesize来获取我的ivars.属性被保留,所以我想保留由@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时提供其他自定义的访问器方法实现?全部内容,希望文章能够帮你解决objective-c – 如何在使用@synthesize时提供其他自定义的访问器方法实现?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1017278.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存