我已经回顾(并尝试)了这里关于单例和NSMutableArrays的一堆帖子。我是Objective-C的新手,所以请耐心听我说。
我只想创建一些可以从任何view/.m文件访问的数组。
单例最好(或最简洁)的编码是什么?
下面是我现在得到的结果,我在.m '@implementation‘-“implementation”不完整“1在视图.m文件中使用时出现错误- "initializer element is not a compile-time constant”
这是我现在拥有的代码-我的GlobalData.h文件:
#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文件:
#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文件(简化)中:
#import GlobalData.h
GlobalData *globDat=[GlobalData getInstance]; //error occurs here有没有人能指出问题所在,如果有更好的编码,请告诉我--谢谢!
编辑
以下是我尝试使用的几个链接:
Can i have a single NSMutableArray in my multiple views application?
发布于 2012-01-20 03:10:59
下面是将任何类转换为Singleton的单个方法的“现代”版本(在本例中格式化为代码片段)。它可以在iOS4.x或更高版本中运行:
+(<#SingletonClassName#> *) sharedInstance
{
static <#SingletonClassName#> *_sharedClient = nil;
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate, ^{
_sharedClient = [[self alloc] init];
});
return _sharedClient;
}但是,您真的需要单个NSMutableArray的单个实例吗?您可以使用内置的单例-您的应用程序委托,它是通过调用以下命令获得的:
MyAppDelegate * appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.myMutableArray addObject:...];https://stackoverflow.com/questions/8931742
复制相似问题