我有一種情況,我想分配一個NSString對象,並在if-else塊內分配文本。當我寫這樣的代碼:當初始化NSString時分離alloc和init
NSString *string = [NSString alloc];
if (firstCase)
[string initWithString:@"firstCase"];
else if(secondCase)
[string initWithString:@"secondCase"];
[self someFunction:string];
我得到的someFunction
內部的錯誤(當我嘗試使用string
拋出NSInvalidArgumentException)。 此外,當我通過我的執行代碼,一旦我進入someFunction
,控制檯會產生這樣一行:
你忘了窩的alloc和init?
這是指string
。
我試過同樣的事情使用一個NSMutableString,只是做string = [[NSMutableString alloc] init]
,只是追加到每個if-else塊中的字符串,但我想知道是否有人知道爲什麼以前的方式不會產生相同的結果。
到目前爲止,我總是進入if-else。如果我將字符串初始化爲@「」,那麼我不能在if-else塊中再次更改它嗎?或者這樣做是合法的: NSString * string = [NSString alloc] initWithString:@「」]; if(case1) [string initWithString:@「case1」] – Vince613
@ Vince613看看編輯 - 你總是可以附加到字符串。我不會在if中聲明你的字符串,因爲變量的範圍在if和else之內,如果這會導致更多的問題。 – Matt
你說的只存在於if-else塊中的變量範圍我認爲正是我的問題所在。我還沒有在編輯中嘗試過你的解決方案,但它看起來是可行的。謝謝您的幫助! – Vince613