首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为Xcode4创建/使用单例NSMutableArray的正确方法

为Xcode4创建/使用单例NSMutableArray的正确方法
EN

Stack Overflow用户
提问于 2012-01-20 03:02:32
回答 4查看 14K关注 0票数 5

我已经回顾(并尝试)了这里关于单例和NSMutableArrays的一堆帖子。我是Objective-C的新手,所以请耐心听我说。

我只想创建一些可以从任何view/.m文件访问的数组。

单例最好(或最简洁)的编码是什么?

下面是我现在得到的结果,我在.m '@implementation‘-“implementation”不完整“1在视图.m文件中使用时出现错误- "initializer element is not a compile-time constant”

这是我现在拥有的代码-我的GlobalData.h文件:

代码语言:javascript
运行
复制
#import <Foundation/Foundation.h>

@interface GlobalData : NSObject {    
    NSMutableArray *listOfHeadings;
    NSMutableArray *listOfItems1;
    NSMutableArray *listOfItems2;
}    
@property(nonatomic,retain)NSMutableArray *listOfHeadings;
@property(nonatomic,retain)NSMutableArray *listOfItems1; 
@property(nonatomic,retain)NSMutableArray *listOfItems2; 
+(GlobalData*)getInstance;  
@end

我的GlobalData.m文件:

代码语言:javascript
运行
复制
#import "GlobalData.h"

@implementation GlobalData
@synthesize listOfHeadings;
@synthesize listOfItems1;
@synthesize listOfItems2;
static GlobalData *instance=nil; 

+(GlobalData *)getInstance    
{    
    @synchronized(self)    
    {    
        if(instance==nil)    
        {    
            instance= [GlobalData new];    
        }    
    }    
    return instance;    
}    
@end

在视图.m文件(简化)中:

代码语言:javascript
运行
复制
#import GlobalData.h

GlobalData *globDat=[GlobalData getInstance]; //error occurs here

有没有人能指出问题所在,如果有更好的编码,请告诉我--谢谢!

编辑

以下是我尝试使用的几个链接:

Can i have a single NSMutableArray in my multiple views application?

iPhone help with singleton class

EN

Stack Overflow用户

发布于 2012-01-20 03:10:59

下面是将任何类转换为Singleton的单个方法的“现代”版本(在本例中格式化为代码片段)。它可以在iOS4.x或更高版本中运行:

代码语言:javascript
运行
复制
+(<#SingletonClassName#> *) sharedInstance 
{
    static <#SingletonClassName#> *_sharedClient = nil;

    static dispatch_once_t oncePredicate;
    dispatch_once(&oncePredicate, ^{
        _sharedClient = [[self alloc] init];
    });

    return _sharedClient;
}

但是,您真的需要单个NSMutableArray的单个实例吗?您可以使用内置的单例-您的应用程序委托,它是通过调用以下命令获得的:

代码语言:javascript
运行
复制
MyAppDelegate * appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.myMutableArray addObject:...];
票数 6
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8931742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档