제 UITableView의 경우 배열을 데이터 소스로 사용합니다. 지금까지 모든 것이 잘 작동합니다. 그러나 검색 필드를 사용하여 몇 개의 문자를 입력하면 (나중에 다시 삭제할 때) 기본 배열이 갑자기 비어있는 이상한 문제가 발생합니다. 내하는 .m 코드 내 .H배열이 갑자기 비어 있습니다.
@interface dictionaryViewController : UIViewController <UITableViewDelegate>{
...
...
NSMutableArray *cardArray;
}
...
@property (retain) NSMutableArray *cardArray;
...
사용에
이선언 : 여기에 관련이있을 수있는 코드 조각은 내 문제를 이해하는
@synthesize cardArray;
...
- (void)viewDidLoad {
[super viewDidLoad];
self.cardArray = [[NSMutableArray alloc] initWithObjects:nil];
...
}
을 나는 데이터 배열을 채 웁니다 내 SQL DB에서 :
[self.cardArray addObject:[NSString stringWithFormat:@"%@ - %@", aQuestion, anAnswer]];
그리고 코드 내에서 cellForRow meth와 같은 배열 내용을 읽습니다. OD :
끝에- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
thisCardIndex = [self.cardArray indexOfObject:cellValue];
...
}
나는이 같은 (실제로 다른 내가 대신 removeObjects을 사용하는 이유 릴리스 명령에 문제가 있었다)를 눌렀다 : 내가 로그에서
[self.cardArray removeAllObjects];
self.cardArray=nil;
을 오류가 표시되지 않습니다. 그러나 디버거는 코드가 SIGABRT와 충돌하고 내가 볼 수있는 중단 점을 설정할 때 원인이 빈 cardArray임을 보여줍니다.
미리 도움을 주셔서 감사합니다.
논리 잘못 여기 somewhere..post UR 전체하는 .m 파일 가고 .. –
는 메소드'이다 self.cardArray removeAllObjects]; self.cardArray = nil;'? 아마도 그 방법을 더 게시해야합니다. 릴리스 명령에 문제가 있으면 빨간색 플래그가 표시됩니다. 'removeAllObjects' 호출은 필요 없습니다. 배열 속성을 nil로 설정하면 모든 객체에 릴리스가 전송됩니다. 그래서 당신이'removeAllObjects'를 호출해야한다면 다른 이슈를 마스킹합니다. – SSteve