2011-05-05 6 views
3
+ (UITableViewCell *)inputCell { 
    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"id"]; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    cell.textLabel.font = [UIFont boldSystemFontOfSize:14]; 
    return cell; 
} 

Xcode에서 메모리 누수가 발생했습니다. 나는 세포 초기화 중 및 반환 중에 자동 해제를 시도했지만 응용 프로그램이 두 경우에 추락했습니다.어떻게 메모리 누수를 해결할 수 있습니까?

+0

-inputCell를 호출하는 곳에서 코드에 문제가없는 한 – Jorge

답변

1

alloc init이 보유 개수가 1 인 셀을 반환하기 때문에 게시 한 코드는 메모리가 누출됩니다. 아마도 호출 코드는이 객체를 cellForRowAtIndexPath에 반환하고이 객체를 UITableView에 연결하고 보유 수를 다시 2로 증가시킵니다. 따라서 UITableView가 메모리를 해제하면 객체의 보유 수는 1이됩니다.

이 코드에서 객체 자동 반복을 시도한 후 충돌이 발생하면 별도의 버그가 발생합니다. 당신은 당신이 오토 릴리즈를 사용해야합니다

+0

필자는 Utility라는 클래스 내에 inputCell 메서드를 작성했습니다. 다른 클래스의 inputCell을 으로 호출합니다. fNameCell = [유틸리티 inputCell]; –

+1

@Kiran이 방법으로 셀을 할당하는 데는 아무런 문제가 없습니다 (자동 해제가 필요합니다). 따라서 inputCell 호출 후에 해당 객체로 수행중인 작업을 확인하십시오. 다른 곳에서는 공개하지 않습니까? – RedBlueThing

+0

아니요 어디서나 공개하지 않습니다 –

0
UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"id"] autorelease]; 

잘해야한다. "inputCell"메서드를 사용하여 코드를 게시 할 수 있습니까? 충돌이 코드의 다른 부분에 있다고 생각합니다.
+0

나는 이것을 시도했지만 여전히 누출이있다. –

관련 문제