我正在使用Singleton Class来分享我从webservice处理的大量数据,我在之前的应用程序中也做过这些。但是由于新的ios 4.2无法正常工作,我无法理解它无法工作的原因,因为它与新的api / frameworks无关。
以下是我的单身人士的代码:
@interface SingleTon : NSObject {
NSMutableArray *hname;
}
+ (SingleTon *) sharedInstanceHname;
//hname
-(NSMutableArray *) getHname:(NSMutableArray *)x;
-(void) setHname:(NSMutableArray *)x;
.m class:
@implementation SingleTon static SingleTon * _sharedInstanceHname;
- (id) init
{
if (self = [super init])
{
// custom initialization
//memset(board, 0, sizeof(board));
hname = [[NSMutableArray alloc] initWithObjects:@"NO RESULT",nil];
index =1;
}
return self;
}
+ (SingleTon *) sharedInstanceHname
{
if (!_sharedInstanceHname)
{
_sharedInstanceHname = [[SingleTon alloc] init];
}
return _sharedInstanceHname;
}
- (NSMutableArray *) getHname:(NSMutableArray *)x
{
return hname;
}
- (void) setHname:(NSMutableArray *)x
{
hname = x;
}
这里我如何使用Singleton在我的第一个视图中存储值:
SingleTon *sname = [SingleTon sharedInstanceHname];
[sname setHname:hname];
以下是我在第二个视图viewDidLoad方法中访问此设置值的方法:
SingleTon *places = [SingleTon sharedInstanceHname];
NSLog(@"%@", [places getHname:getname]);
我尝试了所有可能的保留释放但没有用...而且错误也有所不同......有时候它是“EXC_BAD_ACCESS”而其他时间
答案 0 :(得分:2)
调用initWithObjects:
,您应该使用nil
终止值列表。除了这是你在准备这个例子时所做的拼写错误。
此外,您的setHname:
方法可能存在问题,既不保留也不复制正在分配的值。