Выпуск пользовательского объекта класса - PullRequest
0 голосов
/ 28 марта 2011

У меня есть класс с именем Res следующим образом

@interface Res : NSObject {      
    int _id;  
    NSString *_name;  
    NSString *_comments;    
 // ... and to many other objects.  
}@property (nonatomic) int id;  
@property (nonatomic, retain) NSString *name;  
@property (nonatomic, retain) NSString *comments;  

На мой взгляд, у меня есть UITableView, я хочу, чтобы пользователь вводил значения в поле UIText внутри UITableViewCell, поэтому я добавил ниже код

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
{  
 //code for creating cell  

switch (indexPath.row) {  
        case 0:  
            //  Label  
            [[cell textLabel] setText:@"Name :"];  

            // Textbox  
            UITextField *_txtName = [[UITextField alloc] initWithFrame:CGRectMake(100, 0, 180, 44)];  
            [_txtName setDelegate:self];  
            [_txtName setTag:0];  
            [cell.contentView addSubview:_txtName];  
            [_txtName release], _txtName = nil;              
            break;  
        case 1:  
          // ......    
}  

Теперь, когда пользователь вводит значения в текстовое поле, я получаю его с помощью следующего метода

- (void)textFieldDidEndEditing:(UITextField *)textField  
{      
    switch ([textField tag]) {  
        case 0:  
           [_resTemp setName:[textField text]];  
           break;            
        default:  
            break;  
    }  
}  

Я объявил _resTemp переменную в качестве переменной экземпляра в моем файле .h
в ViewDidLoad метод, который я пишу _resTemp = [[Res alloc] init];
и по методу ViewDidUnload я освобождаю его как [_resTemp release];
, и я также освобождаю его в методе dealloc.

Тем не менее, я получаю утечки памяти относительно этой переменной.
Я не понимаю, где освободить этот объект, или мне нужно изменить свою логику.Кто-нибудь может дать мне несколько ссылок, которые ссылаются на код для ввода данных в UITableView?

1 Ответ

1 голос
/ 28 марта 2011

Вы должны определить метод dealloc в своем классе Res.

- (void)dealloc
{
    [_name release];
    [_comments release];
    [super dealloc];
}

Метод освободит объекты, содержащиеся в вашем объекте Res, перед его освобождением.

...