2012-04-29 48 views
0

我正在通過斯坦福大學CS193P,iPhone編程的2010年秋季版本。在作業2中,我正在改進在作業1中創建的計算器應用程序。看起來我差不多完成了,但是當我嘗試按下界面上的一個變量時(出於這些目的,「x」),應用程序崩潰。iPhone計算器應用崩潰時試圖添加對象到NSSet

使用我有限的調試技巧,我設法跟蹤了這個問題。問題出現在方法「(NSSet)variablesInExpression:(id)anExpression」中。

+ (NSSet *)variablesInExpression:(id)anExpression 
{ 
NSMutableSet *setOfVariables = [[NSSet alloc] init]; 
for (NSString *str in anExpression) { 
    if ([str hasPrefix:VARIABLE_PREFIX]) { 
     [setOfVariables addObject:str]; 
    } 
} 
[setOfVariables autorelease]; 
return setOfVariables; 
} 

當我站上罰球線

[setOfVariables addObject:str]; 

應用程序崩潰。我一直試圖找出幾個小時,請幫助! XCode中有沒有一種方法可以查看'anExpression'中的整個值列表?

回答

1

雖然你宣佈你爲可變集創建不可改變的NSSet類的實例變量 - 您必須創建的NSMutableSet實例:

NSMutableSet *setOfVariables = [[NSMutableSet alloc] init]; 
+0

哎呀有一個大的OOP失誤!謝謝! – 23ChrisChen