什么是最好的方式来创建一个只读给公众,并阅读/写入“私人”的财产?我可以创建一个只读方法,并在.m文件中以无名扩展名声明该属性,但最好我想保留点符号。公众阅读,“私人”保留财产
2
A
回答
6
在你的公共接口,财产申报只读即
// Foo.h
@interface Foo
{
@private
Baz* bar;
}
@property (readonly, retain) Baz* bar;
@end
在您的实现可以声明class extension,那么你重新声明属性读/写:
// Foo.m
@interface Foo() // Note parentheses
@property (retain) Baz* bar;
@end
@implementation Foo
@synthesize bar;
@end
上述手段那么setter和getter都将被创建,但是在包含头文件的文件中,只有getter会被了解。缺点是setter确实存在,所以如果你忽略了编译器警告并在Foo.m之外使用setter,它仍然可以工作。
但是,相比直接声明只读属性并直接访问伊娃而言,您不必手动实现KVO,当然,内存管理自动完成。
2
通常人们在@synthesize
声明中创建一个实例var并将其与readonly属性配对。但是,伊娃不能通过点符号访问。你必须直接通过它的名字来访问它。
+0
我试图通过'self'来访问ivars。因为它让内存管理变得更简单。 – Morrowless 2011-04-27 03:58:48
相关问题
- 1. 公众,保护私人
- 2. 改变公众对私人
- 3. 阅读微博公众流
- 4. 公共财产VS私有财产与getter?
- 5. 私人/保护/公众如何影响ABI?
- 6. Reflection.Emit私人领域/财产访问
- 7. 目标c中的私人财产
- 8. 私人财产领域的StackOverflow例外
- 9. Fineuploader设置ACL公众阅读
- 10. 私人二传手和只读财产有什么区别?
- 11. 对私有财产
- 12. 持有人保留财产时的行为
- 13. - (空)dealloc的财产(非原子,保留)
- 14. 这是一个保留周期(财产)?
- 15. 在复制财产保留计数
- 16. 在DTO保留财产案例
- 17. 保留使用(保留)财产时的行为
- 18. 如何防止财产二传手修改私人财产数据
- 19. OO设计 - 您是否内部使用公共财产或私人领域?
- 20. 地图私有财产
- 21. 将私有财产公开/使用Swift类别只读一个可写的?
- 22. 公共/私人
- 23. 私人常量与公开只读
- 24. 私有财产与设置/获取和私人财产之间的区别没有设置得到C#
- 25. 公共私人和保护在objective-c
- 26. 无法将值从私人传递给公众Sub
- 27. JavaScript的OOP私有方法访问公共财产
- 28. 将$ _POST分配给公共类的私有财产PHP
- 29. 流利的NHibernate自动映射的私人/保护财产,作为标识
- 30. 静态与公共财产
我没有意识到你可以像这样宣布两次。优秀! – Morrowless 2011-04-26 10:11:09
@hyn:顺便说一下,点符号与'@ property'无关。如果你有一个方法声明为' - (Baz *)bar;'你可以使用点符号来访问它。 – JeremyP 2011-04-26 10:15:58
也不知道。感谢您的信息:) – Morrowless 2011-04-27 03:56:46