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