_displayedItems
- это личный ивар, поэтому вы не должны получать к нему доступ даже из категории.
Тем не менее, вы должны попробовать скомпилировать тот же код с
gcc -arch i386
и
gcc -arch x86_64
и увидите разницу. В 32-битном режиме вы не видите ошибку. Это показывает, насколько хрупка ситуация. Вы действительно не должны.
Тем не менее, есть способ получить этот ивар, используя KVC:
@implementation NSCollectionView (displayedItems)
- (NSMutableArray *)myDisplayedItems
{
return [self valueForKey:@"displayedItems"];
}
@end
Обратите внимание, что вы не должны называть свой метод так же, как displayedItems
. Это сделало бы бесконечный цикл, потому что механизм KVC нашел бы ваш метод раньше, чем ivar. Смотрите здесь .
Или вы можете получить доступ к любому скрытому ивару, используя функции времени выполнения Objective C. Это тоже весело.
Однако позвольте мне сказать еще раз. Есть большая разница в том, чтобы знать, что ты можешь сделать что-то одно, и делать это реально. Просто подумай о любом отвратительном преступлении. и делать это самостоятельно.
НЕ ДЕЛАЙТЕ ЭТОГО !!!!!