저는이 코드를 오래 동안 보았지만 세상에서 무엇이 잘못되었는지 알 수 없습니다. SortFilteringController라는 클래스가 있는데,이 필터는 시스템 (내부 필터, 공용 필터, 정렬 옵션 등)에있는 다른 필터링을 관리합니다. 이들 각각은 배열에 저장됩니다. 그래서 나는 기본적으로 이러한 배열 중 하나를 취하는 convience 메서드를 사용하고 새로운 데이터로 다시 설정합니다.NSArray 딥 카피로 인해 충돌이 발생합니다
예를 들어, setInternalFilter는 그냥 호출합니다.
- (void) setInternalFilterTerms : (NSArray*) filterTerms {
[self resetArray: &_internalFilters withNewData:filterTerms];
}
resetArray의 정의는, 단지에서 기존 (놓습니다), 복사 새 데이터를 덤프하는 것입니다.
- (void) resetArray: (NSMutableArray**) oldArray withNewData : (NSArray*) newData {
if (*oldArray != nil) {
[*oldArray release];
}
NSMutableArray* newArray = [[NSMutableArray alloc] initWithArray:newData copyItems:YES];
*oldArray = [newArray retain];
[newArray release];
}
는하지만 내 문제는 내가 리셋 방법에서 충돌을 얻을 수있다. 시뮬레이터에는 없으며 장치에서만 작동합니다.
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x331a3a1c __pthread_kill + 8
1 libsystem_c.dylib 0x3404c3b4 pthread_kill + 52
2 libsystem_c.dylib 0x34044bf8 abort + 72
3 libstdc++.6.dylib 0x30e4fa64 __gnu_cxx::__verbose_terminate_handler() + 376
4 libobjc.A.dylib 0x30fda06c _objc_terminate + 104
5 libstdc++.6.dylib 0x30e4de36 __cxxabiv1::__terminate(void (*)()) + 46
6 libstdc++.6.dylib 0x30e4de8a std::terminate() + 10
7 libstdc++.6.dylib 0x30e4df5a __cxa_throw + 78
8 libobjc.A.dylib 0x30fd8c84 objc_exception_throw + 64
9 CoreFoundation 0x33e5f1b8 -[NSObject(NSObject) doesNotRecognizeSelector:] + 96
10 CoreFoundation 0x33e5e642 ___forwarding___ + 502
11 CoreFoundation 0x33dd5178 _CF_forwarding_prep_0 + 40
12 CoreFoundation 0x33dcb156 -[NSArray initWithArray:range:copyItems:] + 366
13 CoreFoundation 0x33dcafce -[NSArray initWithArray:copyItems:] + 54
14 Wine DB 1.1 0x001b6a2a -[SortFilterController resetArray:withNewData:] (SortFilterController.m:1310)
15 Wine DB 1.1 0x001b4188 -[SortFilterController setInternalFilterTerms:] (SortFilterController.m:733)
나는 아이폰 OS 5.0 GM 종자와 엑스 코드 4.2을 실행하고 있습니다. 장치가 여전히 실행 중입니다. 4.1.3. 그러나 그것은 차이를 올바르게 만들어서는 안된다. 그리고 오류는 "doesNotRecognizeSelector"입니다. 얼마나 이상한가.
감사합니다.
오류의 전체 텍스트를 넣으십시오 - 시뮬레이터에는 있지만 장치는 없었던 인터페이스가있는 인스턴스를 발견했습니다. 어떤 셀렉터가 인식하지 못합니까? –