我个人更喜欢,如果你需要你的对象引用范围,那么在类之外使用属性声明。否则将其声明为类括号内的实例变量,并在实现文件中声明。(如果您没有进一步继承此变量功能)
所以,
- 如果您需要在类之外访问变量实例,请声明属性。在 MyClassViewController.h 头文件中
@property (strong, nonatomic) IBOutlet NSTextField *myTextField;
所以现在在其他类中,可以通过以下方式访问它:
MyClassViewController *myClassViewController = [[MyClassViewController alloc] init];
[myClassViewController.myTextField setText:@"MyValue"];
也得到像
NSLog(@"%@", [myClassViewController.myTextField text]);
现在,如果有另一个类继承了 ViewController 类,那么这个属性将根据其访问说明符在 ChildViewController 中被继承。
- 如果您想要完全隐藏的属性或变量。就像它甚至没有在该类本身之外使用一样,那么您可以在私有类别本身的实现文件(.m)中声明它。在 ViewController.m 文件中:
@interface ViewController () {
NSString *myString;
}
因此,这将仅在 .m 文件中可见,其他任何地方都没有。
现在声明@property
- 只有在需要 setter-getter 默认方法(如 setMyString 等)时才需要声明它。这也可以根据您对该实例的可见性要求在 .h 和 .m 中声明。
希望现在你能理解这个概念。一切都与能见度有关。