2011-06-28 51 views
0

這就是我在tableview中創建兩個文本域的方式,並且我在dealloc方法中釋放它們。當我輸入UITextfield時內存急劇增加

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *MyIdentifier = @"MyIdentifier"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease]; 
    } 

    cell.accessoryType = UITableViewCellAccessoryNone; 

    if ([indexPath row] == 0) { 
     text = [[UITextField alloc] initWithFrame:CGRectMake(5, 5, 300, 30)]; 
     text.delegate=self; 
     text.userInteractionEnabled=NO; 
     text.contentVerticalAlignment=UIControlContentVerticalAlignmentCenter; 
     if (qNum-1 == 53) { 
      [email protected]"Category"; 
     } 
     [cell.contentView addSubview:text]; 
    } 
    if ([indexPath row] == 1) { 
     text2 = [[UITextField alloc] initWithFrame:CGRectMake(5, 5, 300, 30)]; 
     text2.delegate=self; 
     text2.userInteractionEnabled=NO; 
     if(qNum-1==53) { 
      [email protected]"Subcategory"; 
     } 
     text2.contentVerticalAlignment=UIControlContentVerticalAlignmentCenter; 
     [cell.contentView addSubview:text2]; 
    } 

    cell.selectionStyle = UITableViewCellSelectionStyleNone; 

    return cell; 
} 

問題是一旦虛擬鍵盤出現,我開始在文本字段中輸入內存急劇增加。有人能幫我解決這個問題嗎?提前致謝。

這是我寫的委託方法

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
[textField resignFirstResponder]; 
return YES; 

}

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 

if([text.text isEqualToString:@"United States"]||[text.text isEqualToString:@"Australia"]){ 
    text2.userInteractionEnabled=NO; 
    [email protected]"State"; 
    myPickerView.hidden=YES; 
    myPickerView2.hidden=NO; 
    [actionSheet showInView:mainView]; 
    [actionSheet setBounds:CGRectMake(0, 0, 320, 400)]; 
} 

}內

+0

我認爲你的問題是在文本字段委託方法。請張貼該代碼,並在發佈時進行格式化。這會讓我們更容易幫助你。 –

回答

2

你的代碼中有幾個問題。即使重新使用它,您也會爲單元添加新的UITextFields,因此您可以將新的文本字段反覆添加到同一個單元格中。您需要爲if (cell == nil)部分內的不同類型的單元構建不同的設置邏輯,並且以後只配置這些單元。另外,您可能希望在將它們添加爲子視圖後發佈文本字段。請參閱Apple的文檔中的示例UITableView

你可能想要顯示你的委託方法 - 也許還有一些問題。

+0

+1在委託方法中存在泄漏的一定可能性,但是這種方法有足夠的可能性。 –

+0

我已經嘗試編寫代碼塊中的代碼,並已發佈文本字段。但是當我開始打字的時候,記憶仍在開始。請幫我解決這個問題! – booleanBoy

+0

委託方法看起來不錯。重新創建單元格時,您希望使單元格標識符取決於單元格的類型。但對於更深入的分析,我們需要更多的信息。 – Eiko

0

您還沒有釋放文本框

+0

我試過釋放textfields。但仍然內存條件保持不變 – booleanBoy

1

試試這個

01碼

[cell.contentView addSubview:text2]; 
[text2 release]; 
+0

感謝您的提示。但仍然沒有用! – booleanBoy

0

你使用儀器來檢測內存分配?我注意到了同樣的確切問題。當鍵盤顯示出來時,內存使用量就會開始上升......我認爲這是您不必擔心的問題。我沒有做任何解決這個問題的事情,而且在出現鍵盤時,它幾乎都會發生。可能是儀器的一個錯誤?