0

我正在使用 Singleton Class 来共享从 web 服务获取的大量数据以进行处理,这在我以前的应用程序中也做过。但是对于新的 ios 4.2 它不起作用,我无法理解它不起作用的原因,因为它与新的 api/frameworks 无关。

这是我的单身人士的代码:

 @interface SingleTon : NSObject {

  NSMutableArray *hname;

}
+ (SingleTon *) sharedInstanceHname;

//hname
-(NSMutableArray *) getHname:(NSMutableArray  *)x;
-(void) setHname:(NSMutableArray  *)x;

.m 类:

@implementation SingleTon 静态 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”,有时是其他

4

1 回答 1

2

调用initWithObjects:时,您应该使用 终止值列表nil。除了这是您在准备示例时犯的错字。

此外,您的方法可能存在问题,setHname:既不保留也不复制分配的值。

于 2011-01-22T23:53:15.360 回答