根据苹果的文档所述:http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/ObjectiveC/Chapters/ocCategories.html#//apple_ref/doc/uid/TP30001163-CH20-SW1,类别不能为类声明额外的实例变量; 它只包括方法。但是,类范围内的所有实例变量也在类别范围内。这包括类声明的所有实例变量,甚至包括使用@private声明的变量。
然而,当我尝试访问UITextField的私有实例变量“_selectionRange”时,出现符号未找到错误。以下是我的源代码和错误消息供您参考。对于阅读我上一个示例“NSString”的人,我感到抱歉。它不是一个很好的示例,因为NSString类中没有任何@private实例变量。
NSString+Utilities.h
错误: i386架构中未定义的符号: “_OBJC_IVAR_$_UITextField._selectionRange”,引用自: 在NSString+Utilities.o中的-[UITextField(Editing)deleteBkw] ld:找不到符号(s)以i386为架构 collect2:ld返回1个退出状态
然而,当我尝试访问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”,引用自: 在NSString+Utilities.o中的-[UITextField(Editing)deleteBkw] ld:找不到符号(s)以i386为架构 collect2:ld返回1个退出状态
#import <UIKit/UIKit.h>
吗? - Adam Rosenfield