什么是最好的方式来创建一个只读给公众,并阅读/写入“私人”的财产?我可以创建一个只读方法,并在.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. AutoFixture和私人财产
- 5. 私人财产和关闭
- 6. 阅读微博公众流
- 7. 支持拥有私有财产的公共财产?
- 8. 公共财产VS私有财产与getter?
- 9. snmp私人mib防止节点对公众用户可读
- 10. 私人/保护/公众如何影响ABI?
- 11. 目标c中的私人财产
- 12. 私人财产领域的StackOverflow例外
- 13. Reflection.Emit私人领域/财产访问
- 14. 手稿错误:私人财产丢失?
- 15. 财产:私人方法或私人获取/设置?
- 16. Fineuploader设置ACL公众阅读
- 17. 私人二传手和只读财产有什么区别?
- 18. 遍历数组保存私有财产
- 19. 对私有财产
- 20. 持有人保留财产时的行为
- 21. 在xhtml阅读persistente包财产(jsf)
- 22. 使用反射获取私有财产的私有财产
- 23. 这是一个保留周期(财产)?
- 24. 财产没有保留与例
- 25. 的iOS CLLocation财产不保留值
- 26. 在DTO保留财产案例
- 27. 在复制财产保留计数
- 28. - (空)dealloc的财产(非原子,保留)
- 29. 释放保留的财产在self.view
- 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