Dav*_*ong 26
您可以通过几种不同的方式执行此操作:
而不是将其声明为全局变量,将其包装在单个对象中,然后在任何地方都可以使用单例(通过#importing .h文件)
创建一个.h文件,如"Globals.h".在.h中,将你的数组声明为extern NSMutableArray * myGlobalArray; 然后在你应用程序的其他地方(AppDelegate是一个好地方),只需这样做:myGlobalArray = [[NSMutableArray alloc] init]; 然后你需要数组的任何地方,#import "Globals.h"
这就像#2,但没有全局标题.您可以将数组定义为项目的.pch文件块extern NSMutableArray *myGlobalArray;内#ifdef __OBJC__..pch文件是一个头文件,它会自动#imported到项目中的每个文件中.
每种方法都有利弊.在不同的情况下,我在不同的时间使用了这三种.我会说单例方法可能是最合适的,因为它对于初始化,访问限制和内存管理来说是最灵活的.但是,如果您不需要,则可能没有必要.
如果你有很多"全局"变量不希望暴露给项目中的每个文件,那么选项#2就很不错.你可以#import它在需要的地方.但是,这种方法(以及#3)将声明与初始化解除关联(即,对象不是在声明它的位置附近创建的).有些人可能认为这不合适,他们可能是正确的.
选项#3很好,因为你永远不必记住#import任何东西.但是,它提出了与选项#2相同的问题.
第四个答案是声明您的阵列UIApplicationDelegate并通过它访问它
[[[UIApplication sharedApplication] delegate] myArray];
Run Code Online (Sandbox Code Playgroud)
有些时候我只需要一些全局对象,我发现这是最简单,最干净的方法.