1

我正在尝试创建一个应该用作数组的结构。

然后同时我需要从不同的视图访问它,所以我猜我现在需要让它成为全球性的,直到我学会了一种更好的方法(尝试了很多来自谷歌搜索的建议)

但是我如何两次声明一个变量呢?

我的意思是既作为我的结构,又作为一个数组?

4

2 回答 2

0

有时“全局变量”可能是合适的,但不仅仅是“全局变量”。在 Objective C 中正确的方法是使用单例。

下面是 .h 实现的一部分:

@interface MySingleton : NSObject

@property (nonatomic, strong) NSMutableArray *myArray;

+ (MySingleton *)sharedSingleton

@end

这是 .m 实现的样子:

@implementation MySingletion
@synthesize myArray;

static MySingleton *shared = nil;

- (id)init
{
    self = [super init];
    if(self)
    {
        myArray = [[NSMutableArray alloc] init];
    }
    return self;
}

+ (MySingleton *)sharedSingleton
{
    if(shared == nil)
    {
        shared = [[MySingleton alloc] init];
    }

    return shared;
}

然后,每当您想从给定的类中访问它时,您将 #import "MySingleton.h" 并像这样访问您的数组:

[MySingleton sharedSingleton].myArray

编辑:但是,这并不意味着每次您需要传递数据时都应该使用单例来完成。单例在某些情况下是正确的,但正如其他人所提到的,在大多数情况下,您应该自己将数据传递给下一个类。

于 2012-08-01T12:46:35.640 回答
0

好吧,我刚刚创建了一个新的 h 和 m fil,我在其中放置了很多变量

在 .h 文件中使用 extend 并在 .m 文件中使用 alloc init

然后我只在需要变量的地方包含这个文件。可能有更好的方法,但这是我唯一能想到的方法。

于 2012-08-03T22:01:01.807 回答