2011-01-13 12 views
2

您好我有一個問題我已經聲明和初始化3個變量在程序目標C部分的NSString不轉向NSCFString

[[accidtest initWithString:@"0293749372920383"]freeWhenDone:NO]; 
[[accnumber alloc] init]; 
[[accprefix alloc] init]; 

的NSString

static NSString* accidtest; 
static NSString* accnumber; 
static NSString* accprefix; 

後,我給了他們從XML 值像那

accnumber = string; 
accprefix = string; 

但最後當我想要使用它們時,我發現問題o至少accnumber變成NSCFString並保存其值超出範圍。

感謝所有幫助

回答

2

這是比較正確的:

/* these initialize to nil */ 
static NSString* accidtest; 
static NSString* accnumber; 
static NSString* accprefix; 

/* ... */ 

/* ??? freeWhenDone */ 
assert(nil == accidtest); /* make sure we aren't creating twice, leaking the previous assignment */ 
accidtest = [[NSString alloc] initWithString:@"0293749372920383"]; 

assert(nil == accnumber); /* make sure we aren't creating twice, leaking the previous assignment */ 
accnumber = [[NSString alloc] initWithString:string]; 

assert(nil == accprefix); /* make sure we aren't creating twice, leaking the previous assignment */ 
accprefix = [[NSString alloc] initWithString:string]; 
1

你試圖調用-alloc在非初始化的變量。這沒有任何意義,編譯器應該對你大喊大叫。相反,你應該有類似

accidtest = [[NSString alloc] initWithString:@"0293749372920383"]; 
accnumber = [[NSString alloc] init]; // what's the point of this? Equivalent to @""