我在一本书中看到了一个示例,展示了这段代码:
@implementation ViewController
{
NSString *name;
}
为什么不在
@interface
中声明变量呢?在@implementation
中声明变量和在@interface
中声明变量有什么区别?为什么要在作用域中声明这个NSString
?我在一本书中看到了一个示例,展示了这段代码:
@implementation ViewController
{
NSString *name;
}
@interface
中声明变量呢?在@implementation
中声明变量和在@interface
中声明变量有什么区别?为什么要在作用域中声明这个NSString
?@implementation
部分声明ivars的优点是更好的封装性。这样,ivars就不必出现在.h
文件中,因此对于只能看到头文件的类的外部用户来说,它们是不可见的。这更好地隐藏了类的内部实现。@implementation
块中声明,我认为你根本没有理由在@interface
中声明一个ivars(除了向后兼容)。
因为这是声明实例变量的唯一方法。否则,您将声明一个可以从同一文件中的任何地方访问的变量(请参见BoltClock在评论中链接的问题)。为什么要在范围内声明这个NSString?