我应该总是更好地写
@interface MyClass
{
NSTextField * myTextField ;
}
@property (assign) NSTextField * myTextField ;
或者只是
@interface MyClass
{
NSTextField * myTextField ;
}
?
为什么我有理由认为我们应该添加 @property
行:
我最近有一个程序,如果 socket 没有 getter/setter,则该程序将无法工作。
另外:我们在创建项目时发现了以下行
@property (assign) IBOutlet NSWindow *window;
最佳答案
一旦为 socket 对象或任何其他对象创建属性
,就会为其创建ivar(在新编译器中)。
现在创建 ivars 和属性已过时。
甚至属性
也会与自动合成相匹配。
如果您确实想要 ivars,那么您可以将其放入 .m
文件中,或者如果您希望它们是私有(private)的,则可以使用它们向类添加扩展。
Should outlet have setter/getter
是的,您确实需要多次访问它们。例如检查单选按钮、复选框的状态、设置 stringValue 为 NSTextField、通过 [tableView reloadData] 重新加载表格等。
@interface MyClass
{
NSTextField * myTextField ; //this is ivar
}
@property (assign) NSTextField * myTextField ; //this is property
@end
无论您在 .h
中放入的内容都是公共(public)
且可访问的,如果您想将其隐藏,请在 .m
中进行操作,即使是在扩展名。
关于objective-c - Outlet 应该有 getter/setter 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15505771/