在哪里声明全局变量?在.h或.m?

时间:2010-12-23 07:37:59

标签: objective-c cocoa-touch global-variables

.m文件中声明变量@implementation和.hface中的.h fie之间有什么区别?

@implementation PiechartViewController
NSMutableArray *impIDs;

我观察到如果我创建了3个piechartViewController对象,则新对象会覆盖先前的对象数据,即3个不同对象的impID与上一个实例化对象的值相同。

相反,如果我按照这种方式

在“.h”文件中

@interface PiechartViewController : UIViewController {
    NSMutableArray * impIDs;

代码正常工作.Means impIDs有3个不同的值。

1 个答案:

答案 0 :(得分:2)

首先,类名以大写字母开头,实例变量以小写字母开头。这是惯例。

@implementation PiechartViewController
NSMutableArray *impIDs;

在上文中,impIDs是在包含该代码的文件范围内定义的变量。虽然它或多或少都是全局的,但如果不将它声明为可见的地方(例如extern NSMutableArray *impIDs),您将无法从其他文件访问它。

@interface PiechartViewController : UIViewController {
    NSMutableArray * impIDs;

这里,impIDs是一个实例变量,因此,每个实例都有一个存储空间,可以在impIDs实例变量槽中访问它自己的孤立数据位。

我建议你read this