0

我是Objective-C编程的新手,有一个一直困扰我的问题:为什么一定要在头文件中声明你的变量,像这样?

@interface MyViewController : UIViewController
{
    NSString *myString;
}

为什么不在这里声明它们(在 .m 文件中):

@implementation MyViewController

- (void)viewDidLoad
{
    NSString *myString;
}
4

2 回答 2

4

第一个声明是一个可用于所有实例方法的实例变量。第二个是本地的一种方法。

但是,可以在 .m 文件中声明实例变量:

@implementation MyViewController {
    NSString *myString;
}

事实上,这是声明不需要公开的实例变量的首选方式。仅在 .h 文件中声明其他类需要使用的内容。

于 2013-02-25T00:17:51.797 回答
0

这里有两个不同的问题。

简而言之,头文件 (.h) 是一个公共网关,其他所有内容都可以查看您的类是关于什么的,而无需了解有关您的实现的任何信息。您的头文件应该包含您希望其他类知道的所有内容(即公共方法、属性)。

您可以轻松地在实现文件中声明事物,但其他类将不知道它们。

其次,在您提供的示例中,您已放入NSString *myString;viewDidLoad 方法。这意味着这样的变量将仅在该方法的范围内可用。没有其他东西可以访问它。

于 2013-02-25T00:22:06.933 回答