
@property (nonatomic,strong) Foo * foo;
这(在现代的ObjC中)生成访问器和ivar,_foo用于存储.
如果我想在访问器中进行自定义工作,我可以自己实现其中一个或两个.但是,如果我不仅想做定制工作,我实际上不想要ivar?换句话说,我正在使用Foo对象做其他事情,比如将它来回交给我组成的另一个内部对象.实际上我根本不需要在A的实例中保存foo的存储空间.
看起来我有两个选择:
>声明属性,实现两个访问器,并简单地忽略编译器为_foo创建存储的事实,并且永远不会使用它.
>明确地声明我的访问器: – (Foo *)foo和 – (voID)setFoo:(Foo *)foo在界面中,就像我以前在现代的ObjC中一样.
第一个在运行时看起来不那么优雅,而第二个在声明中看起来不那么优雅(我现在可能会混合使用属性和类似属性的访问器).
有没有办法申报一个财产,并将其作为纯粹的声明?
解决方法 如果同时覆盖setter和getter并且不使用setter和getter中的变量,则不会创建变量.例如,如果你有一个你想要firstname和lastname属性的类,但也可能是fullname属性的setter和getter,如果你的fullname setter只是将字符串解析为firstname和lastname并将这些属性设置为(和永远不会将完整的字符串存储到fullname变量中,并且您的fullname getter只返回连接的firstname lastname,并且永远不会使用fullname变量,永远不会创建一个.
这是根据Apple的官方文档. Scroll down to “You Can Implement Custom Accessor Methods”
总结以上是内存溢出为你收集整理的objective-c – 如何声明@property但是阻止创建它的ivar?全部内容,希望文章能够帮你解决objective-c – 如何声明@property但是阻止创建它的ivar?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)