更新財產我有一個已被宣佈像這樣一個單例類:無法在單例類
+(instancetype)mySharedClass
{
static BBDataStore *sharedBBDataStore = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedBBDataStore = [[self alloc]initWithDataExpiry:DATA_EXPIRY_TIME];
});
return sharedBBDataStore;
}
-(instancetype)initWithDataExpiry: (int) dataExpiry
{
if (self = [super initWithDataExpiry:dataExpiry])
{
self.categoryWebServicePool = [[NSMutableDictionary alloc]init];
self.userProfileWebServicePool = [[NSMutableDictionary alloc]init];
}
return self;
}
在這個類中,我有一個公共財產申報爲這樣:
@property (assign, nonatomic) int countryId;
現在,當我從另一個類設置此屬性,如下所示:
[[BBDataStore sharedDataStore]setCountryId:1];
我的自定義setter在單例類中運行:
-(void)setCountryId:(int)countryId
{
switch (countryId)
{
case RE_INDEX:
self.serverString = RE_SERVER_STRING;
self.authId = BB_AUTH_SA_ID;
break;
case KE_INDEX:
self.serverString = KE_SERVER_STRING;
self.authId = BB_AUTH_KENYA_ID;
break;
}
}
但是,self.countryId始終保持爲0,並且永遠不會更改其值。我在這裏做錯了什麼?
解決了這個問題。非常感謝。我只是假定製定者設置了財產。沒有知道我必須直接設置伊娃。糟糕! – Tander
不用擔心。另外,您可以對感興趣的屬性使用關鍵值觀察(KVO),以便您不必處理該問題(或在setter中使用副作用)。 – FluffulousChimp
這款iOS遊戲仍然新鮮出爐。因此,請閱讀KVO,看看它是否適合這個問題。 – Tander