使用单例创建可由多个视图访问的数组

| 这是一个经典的问题。 我想从我的应用程序中的任何位置访问对象数组。我也想使用单例。我的问题是: 我在哪里实例化我的单例对象? 我在哪里实例化我的NSMutable对象数组? 如何在项目中的任何地方引用此数组? 非常感谢所有代码和示例! 编辑1 这是我到目前为止所拥有的。我无法弄清楚如何正确,一致地访问此香蕉阵列:
#import <Foundation/Foundation.h>

@interface Singleton : NSObject {
    NSMutableArray *bananas;
}

@property (nonatomic, retain) NSMutableArray *bananas;

@end


#import \"Singleton.h\"

static Singleton *mySingleton;

@implementation Singleton

@synthesize bananas;

#pragma mark SingletonDescption stuff

+ (Singleton *)mySingleton
{
    if(!mySingleton){
        mySingleton = [[Singleton alloc]init];
    }

    return mySingleton;
}

+ (id)allocWithZone:(NSZone *)zone
{
    if (!mySingleton) {
        mySingleton = [super allocWithZone:zone];
        return mySingleton;
    } else {
        return nil;
    }
}

- (id)copyWithZone:(NSZone*) zone
{
    return self;
}

- (void)release
{
    // NO OP
}

@end
编辑2 这就是我试图使用我的单例对象在表单元格中放置对象数组的方式。什么也没发生,表格单元格空白:(
- (id)init
{
    [super initWithStyle:UITableViewStylePlain];

    // bananas = [[NSMutableArray alloc] init];

    Singleton *mySingleton = [[Singleton alloc]init];
    mySingleton.bananas = [[NSMutableArray alloc]init];

    UIImage *imageA = [UIImage imageNamed:@\"A.png\"];
    UIImage *imageB = [UIImage imageNamed:@\"B.png\"];
    UIImage *imageC = [UIImage imageNamed:@\"C.png\"];

    Banana *yellowBanana = [[Banana alloc] initWithName:@\"Yellow\" description:@\"Beautiful\" weight:22.0 icon:imageA];
    Banana *greenBanana =  [[Banana alloc] initWithName:@\"Green\" description:@\"Gorgeous\" weight:12.0 icon:imageB];
    Banana *rottenBanana = [[Banana alloc] initWithName:@\"Rotten\" description:@\"Ugly\" weight:8.0 icon:imageC];

    [mySingleton.bananas addObject:yellowBanana];
    [mySingleton.bananas addObject:greenBanana];
    [mySingleton.bananas addObject:rottenBanana];
}
    
已邀请:
        像这样单身吗:
@interface Singleton : NSObject
@property (nonatomic, retain) NSMutableArray *bananas;
+(Singleton*)singleton;
@end
@implementation Singleton
@synthesize bananas;
+(Singleton *)singleton {
    static dispatch_once_t pred;
    static Singleton *shared = nil;
    dispatch_once(&pred, ^{
        shared = [[Singleton alloc] init];
        shared.bananas = [[NSMutableArray alloc]init];
    });
    return shared;
}
@end
首次使用时,单例已初始化。您可以随时随地调用它:
NSLog(@\"%@\",[Singleton singleton].bananas);
    
         您使用惰性实例化,即返回您的单例对象的类方法。第一次调用此方法时,它将创建实例,此后所有其他时间,它将仅返回已可用的实例(保留在类变量中)。 我以为您单身人士的要点是持有这个阵列?您可以在单例的初始化程序中创建它,也可以在第一次需要它时懒惰地创建它。 在您的AppName-pefix.pch文件中,#import其类。此全局导入将在整个应用程序中可用。     

要回复问题请先登录注册