Singleton类适用于4.0 iOS及更早版本,但不适用于4.1和4.2 SDK

时间:2011-01-22 23:39:35

标签: iphone ios4 singleton ios-4.2

我正在使用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”而其他时间

1 个答案:

答案 0 :(得分:2)

调用initWithObjects:,您应该使用nil终止值列表。除了这是你在准备这个例子时所做的拼写错误。

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