Objective c 在哪里声明全局变量?小时还是小时?

Objective c 在哪里声明全局变量?小时还是小时?,objective-c,cocoa-touch,global-variables,Objective C,Cocoa Touch,Global Variables,在.m文件bellow@implementation中声明变量和在@interface中声明.h fie中声明变量有什么区别 @implementation PiechartViewController NSMutableArray *impIDs; 我观察到,如果我创建piechartViewController的3个对象,新对象将覆盖以前的对象数据,即3个不同对象的IMPID的值与上一个实例化对象的值相同 相反,如果我这样做 在“.h”文件中 代码正常工作。意味着impIDs有3个不同的值

在.m文件bellow@implementation中声明变量和在@interface中声明.h fie中声明变量有什么区别

@implementation PiechartViewController
NSMutableArray *impIDs;
我观察到,如果我创建piechartViewController的3个对象,新对象将覆盖以前的对象数据,即3个不同对象的IMPID的值与上一个实例化对象的值相同

相反,如果我这样做

在“.h”文件中


代码正常工作。意味着impIDs有3个不同的值

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

@implementation PiechartViewController
NSMutableArray *impIDs;
在上面的代码中,
impIDs
是在包含该代码的文件范围内定义的变量。虽然它或多或少是一个全局文件,但如果不在其他文件可见的位置声明它,您将无法从其他文件访问它(类似于
extern NSMutableArray*impid

在这里,
impIDs
是一个实例变量,因此,每个实例都将在
impIDs
实例变量槽中存储它自己的独立数据位


我建议你。

你的帖子需要编辑。使用{}表示代码等。以正确的格式发布代码。添加注释我还原了您的一些更改,只是为了反映这样一个事实,即两个声明都是用于相同的事情,但以不同的方式完成的。。。那有点让我的答案错了。已编辑,因此您的编辑将不再引起混淆。:)
@implementation PiechartViewController
NSMutableArray *impIDs;
@interface PiechartViewController : UIViewController {
    NSMutableArray * impIDs;