如何制作全局数组?

问题描述:

所以,我读了this post,这几乎就是我正在寻找的东西。但是...它不起作用。我想我不打算去单身人士的对象,而是在Global.h文件中创建数组,或将其插入到_Prefix文件中。如何制作全局数组?

两次都是我做,虽然,我得到的错误:

之前的预期“静态”

,它不起作用符限定符列表。所以......我不知道如何让它工作,我可以删除外部和它的作品,但我觉得我需要它,使其不断。

最终目标是让这个可变数组可以从任何对象或我的项目中的任何文件访问。帮助将不胜感激!

这是我的Globals.h文件的代码:

#import <Foundation/Foundation.h> 

static extern NSMutableArray * myGlobalArray; 

我不认为我需要在实现文件中任何事情。如果我把它放在前缀文件中,错误是一样的。

编辑

所以,我删除从全局.m文件,我只是有关于在Globals.h代码。假设我将继续这种有全局变量的可怕做法(我知道这很糟糕,我只想测试一下),现在我有一个新的错误。它说:

“多个存储类声明指定”

如果我删除“外部”它的工作原理,如果我删除“静态”它的工作原理,但同时具有不...现在怎么办?

****双编辑****

韪,所以我尝试添加该阵列我的UIApplication代表,但我做错了,因为它无法正常工作。有人可以给我一些示例代码,以便将它放置在哪里吗?我不知道它是否应该在实现中或其他地方,并且一旦数组被初始化后如何从其他文件访问它...我是否为数组设置了一个新变量?

+0

你可以发布你的代码吗? – 2010-03-19 23:48:56

这就是我一直在寻找:

http://derekneely.com/tag/app-delegate/

谢谢你指着我在正确的方向!

只是一个普通的编程建议 - 不要共享一个数组。你无法控制它,如果某件事发生了某种改变,并且以你没有预料到的方式进行改变,它几乎是不可能的。

相反,创建一个对象与数组里面,并使该对象一个单身人士(或更好的,使它的工厂)。

无论何时您想要修改数组,请调用对象上的方法来执行此操作。如果你这样做,我敢打赌你会发现很多冗余代码可以放入这个对象中(例如,在数组中搜索一个值 - 在对象中创建一个“搜索”方法,并传入一个值)。

看起来您应该不需要做很多工作,但是您会发现这是相当有趣的工作,并且您应该发现一旦您看到此代码中包含多少代码就必须执行此操作目的...

两个(主)制作的阵列全球的方式是分离的 - 或者你有一类的方法

static NSMutableArray *foo; 
+(NSMutableArray *)foo { 
    return foo; 
} 

(在.m文件)与静态片NOT在头文件,或者只是

static extern NSMutableArray * myGlobalArray; 

与出单包装(我认为这是更好,因为它可以让您免于不必要的代码额外位)

无论哪种方式,它仍然是一个不好的做法ŧ我会尽量避免的帽子。

#import <Foundation/Foundation.h> 

static extern NSMutableArray * myGlobalArray; 

@interface Globals : NSObject { 
} 


@end 

通常情况下,“Globals.h”文件的存在是一种难闻的气味,工作中存在反模式。

我甚至会建议反对Bill K的建议,而不是使用Singleton模式。

取而代之的是,在您的应用程序委托中创建数组,并将其传递到您的根视图控制器,并沿着层次结构传递给需要访问它的组件。

只需将阵列添加为应用程序委托的财产,并获得它喜欢:

[[UIApplication sharedApplication] myArray];