NSSet
인스턴스에서 CFSetGetValues()
을 사용하려하지만 세트의 메모리가 망가져있는 것처럼 보입니다. 감시 점을 사용하면 설정된 인스턴스가 objc_assign_strongCast_non_gc()
에서 기록됩니다. 지금, 나는 무슨 일이 벌어지고 있는지에 대한 단서가 없습니다. CFSetGetValues가 전달 된 NSSet을 왜곡하는 이유는 무엇입니까?
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSSet *set = [NSSet setWithObjects:@1, @2, @3, nil];
const void *objects = calloc(set.count, sizeof(id));
CFSetGetValues((__bridge CFSetRef)set, &objects);
NSLog(@"Set %@", set); // *** set has been clobbered ***
}
return 0;
}
이
은 OS X 10.8, 64 비트에있다. 동일한 코드가 iOS 시뮬레이터에서 실행될 때 실패합니다.
10.8.4 버전이나 6.1 iOS 시뮬레이터에서 재생산 할 수 없습니다. – CodaFi
@CodaFi는 나를 더욱 혼란스럽게 만듭니다. 로그 문은 전체 집합을 출력합니다. –