2011-04-15 70 views
1

我堅持一個非常奇怪的問題之後,至少對我來說,無法找出解決的辦法。問題是我有在接口定義了兩個nsMutableArrays無法訪問的NSMutableArray對象甚至宣稱正確

NSMutableArray *lastItemForFormula; 
NSMutableArray *lastItemForExpression; 

@property (nonatomic, retain) NSMutableArray *lastItemForFormula; 
@property (nonatomic, retain) NSMutableArray *lastItemForExpression; 

,然後合成它們的實現:

@synthesize lastItemForFormula; 
@synthesize lastItemForExpression; 

嘗試使用它我的我的功能是這樣的:

-(void)elementClicked:(id)sender { 
    UIButton *btnClicked=(UIButton*)sender; 
    NSString* formula=[label text]; 
    NSString *stringToBeConcatenated=[elements objectAtIndex:btnClicked.tag]; 
    formula=[formula stringByAppendingString:stringToBeConcatenated]; 
    [lastItemForFormula addObject:[formula copy]]; //First 
    [label setText:formula]; 
    stringToBeConcatenated=[elements objectAtIndex:btnClicked.tag+1]; 
    if ([labelExpression.text length]==0) { 
     [lastItemForExpression addObject:[stringToBeConcatenated copy]]; //Second 
     [labelExpression setText:[lastItemForFormula objectAtIndex:[lastItemForFormula count]]]; 
    } 
    else { 
     [lastItemForExpression addObject:[[NSString stringWithFormat:@"%@+%@",[labelExpression text], stringToBeConcatenated] copy]]; //Third 
     [labelExpression setText:[lastItemForFormula objectAtIndex:[lastItemForFormula count]]]; 
    } 
} 

但是,當我在調試程序時,我在兩個陣列中都沒有得到任何東西......在兩個盤旋時不斷顯示0x0。我相信這很可能是內存管理問題。我會非常感激任何幫助。

回答

2

您從不初始化數組,因此您將addObject消息發送給nil。

之前試圖將對象添加到您的陣列,請致電擁有該數組類的初始化:

lastItemForFormula = [NSMutableArray new]; 
lastItemForExpression = [NSMutableArray new]; 

,然後一定釋放陣列在你的dealloc。

+0

你忘了保留他們。固定。 – bbum 2011-04-15 22:53:55

+0

@bbum很近似的情況最近發生了......你在這種情況下建議什麼? – Tobias 2011-04-15 23:05:51

+0

和是非常感謝這麼快速準確的回覆 – Tobias 2011-04-15 23:06:53