2010-12-23 38 views
0

在@m文件中声明变量和在@interface中声明.h文件之间有什么区别?在哪里声明全局变量?在.h or.m?

@implementation PiechartViewController 
NSMutableArray *impIDs; 

我观察到,如果我创建piechartViewController的3个对象的新对象覆盖3个不同的对象的一个​​对象的数据即impIDs具有相同的值,上实例化的对象。

,而是如果我跟着 “.h” 头文件,这样

@interface PiechartViewController : UIViewController { 
    NSMutableArray * impIDs;

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

+0

您的帖子需要编辑。使用{}代码等...... – 2010-12-23 07:42:47

+0

发布适当格式的代码。添加评论 – Raxit 2010-12-23 08:35:02

回答

2

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

@implementation PiechartViewController 
NSMutableArray *impIDs; 

在上文中,impIDs是包含该代码的文件的范围内定义的变量。尽管它是一个全局的,或多或少的,你将无法从其他文件中访问它,而无需将其声明在某个可见的地方(如extern NSMutableArray *impIDs)。

@interface PiechartViewController : UIViewController { 
    NSMutableArray * impIDs; 

这里,impIDs是一个实例变量,因此,每个实例将具有存储在impIDs实例变量时隙可访问的数据的它自己的分离的位。我建议你read this