편집 : 저는 이것을하지 않을 것입니다. 이제 어떻게 위험 할 수 있는지 깨달았습니다. 그러나 질문은 순전히 학업 목적으로 만 머물러 있습니다.범주의 개인 변수에 액세스하면 링커 오류가 발생합니다.
NSCollectionView에서 개인 변수 _displayedItems에 액세스 할 수있는 범주를 구현하려고합니다. 내 하위 클래스에서 액세스 할 수 있어야합니다. 그래서 다음 카테고리를 만들었습니다 :
@interface NSCollectionView (displayedItems)
- (NSMutableArray *)displayedItems;
@end
@implementation NSCollectionView (displayedItems)
- (NSMutableArray *)displayedItems
{
return _displayedItems;
}
@end
... 완벽하게 작동해야하는 것처럼 보입니다 .... 나는이를 컴파일 할 때, 링커는 나에게 다음과 같은 오류 제공 :
Undefined symbols:
"_OBJC_IVAR_$_NSCollectionView._displayedItems", referenced from:
-[NSCollectionView(displayedItems) displayedItems] in NSCollectionView+displayedItems.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
내가 _displayedItems이 NSCollectionView에 있는지 아는 사실을, 나는 인터페이스를 보았고, 또한 GDB를 사용하여 내용의 인쇄했습니다. 누구든지이 문제를 해결할 방법을 알고 있습니까?
미리 감사드립니다.
빌리
이 답변이 가장 좋은 것으로 나타났습니다. 간단하고 안전합니다. http : // stackoverflow.com/questions/16678463/접근하는 -a-super-class-when-not-exposed –