Как указано в документации Apple: http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/ObjectiveC/Chapters/ocCategories.html#//apple_ref/doc/uid/TP30001163-CH20-SW1
Note that a category can’t declare additional instance variables for the class; it includes only methods. However, all instance variables within the scope of the class are also within the scope of the category. That includes all instance variables declared by the class, even ones declared @private.
Однако, когда я попытался получить доступ к закрытой переменной экземпляра UITextField "_selectionRange", я получил символ не найденошибка.Ниже приведены мой исходный код и сообщение об ошибке для вашей справки.Я прошу прощения за тех, кто прочитал мой последний пример "NSString".Это был не очень хороший пример, поскольку в классе NSString нет переменных экземпляра @private.
NSString + Utilities.h
#import <Foundation/Foundation.h>
@interface UITextField (Editing)
- (void)deleteBkw;
@end
NSString + Utilities.m
@implementation UITextField (Editing)
- (void)deleteBkw {
NSLog(@"%d:%d", _selectionRange.location, _selectionRange.length);
}
@end
Ошибка: неопределенные символы для архитектуры i386: «_OBJC_IVAR _ $ _ UITextField._selectionRange», на которую ссылаются из: - [UITextField (Editing) deleteBkw] в NSString + Utilities.o ld: символы (символы) не найдены для архитектуры i386 collect2: ld вернул 1 статус выхода