我是Objective-C编程的新手,有一个一直困扰我的问题:为什么一定要在头文件中声明你的变量,像这样?
@interface MyViewController : UIViewController
{
NSString *myString;
}
为什么不在这里声明它们(在 .m 文件中):
@implementation MyViewController
- (void)viewDidLoad
{
NSString *myString;
}
我是Objective-C编程的新手,有一个一直困扰我的问题:为什么一定要在头文件中声明你的变量,像这样?
@interface MyViewController : UIViewController
{
NSString *myString;
}
为什么不在这里声明它们(在 .m 文件中):
@implementation MyViewController
- (void)viewDidLoad
{
NSString *myString;
}
第一个声明是一个可用于所有实例方法的实例变量。第二个是本地的一种方法。
但是,可以在 .m 文件中声明实例变量:
@implementation MyViewController {
NSString *myString;
}
事实上,这是声明不需要公开的实例变量的首选方式。仅在 .h 文件中声明其他类需要使用的内容。
这里有两个不同的问题。
简而言之,头文件 (.h) 是一个公共网关,其他所有内容都可以查看您的类是关于什么的,而无需了解有关您的实现的任何信息。您的头文件应该包含您希望其他类知道的所有内容(即公共方法、属性)。
您可以轻松地在实现文件中声明事物,但其他类将不知道它们。
其次,在您提供的示例中,您已放入NSString *myString;
viewDidLoad 方法。这意味着这样的变量将仅在该方法的范围内可用。没有其他东西可以访问它。