用于在对象之间共享数据的单例模式

用于在对象之间共享数据的单例模式

问题描述:

我试图使用单例模式传递对象周围的数据。这里是我的代码用于在对象之间共享数据的单例模式

SearchData.m

@implementation SearchData 
@synthesize theName = _theName; 

-(id)init 
{ 
    if(self = [super init]) 
    { 
     _theName = @"Default"; 
    } 
    return self; 
} 

static SearchData *sharedSingleton = NULL; 

+(SearchData *)sharedSearchData 
{ 
    @synchronized(self) 
    { 
     if (sharedSingleton == NULL) 
     { 
      sharedSingleton = [[self alloc]init]; 
     } 
     return sharedSingleton; 
    } 
} 
@end 

FirstView.m

...

-(id)init 
{ 
    if (self = [super init]) 
    { 
     SearchData *data = [SearchData sharedSearchData]; 
     self.aName = [data theName]; 
    } 
    return self; 
} 

...

的问题是,我得到

Incompatible pointer types sending NSString to parameter of type NSStream.

这里有什么问题? 如何将数据传递给名称ivar?

在您申报aName时,您是否错误NSStringNSStream?奇怪的事情发生了。

+0

是啊... aName被宣布为NSStream代替的NSString – OhDoh 2012-03-01 18:00:05

+0

真棒!很高兴我能帮上忙。您可以点击左边的小复选标记将答案标记为已接受。非常感谢! – QED 2012-03-01 18:05:00

因为searchdata(NSStream)没有进入NSString。 尝试:

[[NSString alloc] initWithData:searchData ...