【发布时间】:2013-06-12 09:19:33
【问题描述】:
由于基础类(比如 NSString)的 .m 文件不可用,我在想是否可以在同一类上声明的类别的 .m 文件中声明扩展。我成功地创建了一个内部不使用任何实例变量的私有方法。但是,当我尝试访问在接口内声明的 iVar 时,它会导致问题。
*这没有任何目的,只是在尝试。
我所做的是在NSString 上声明一个类别:
NSString+TestInterface.h
@interface NSString (TestInterface)
@end
NSString+TestInterface.m
@interface NSString () {
NSString *myVar;
}
@property (strong) NSString *myVar;
-(void)myPrivateMethod;
@end
@implementation NSString (TestInterface)
-(void)myPrivateMethod{
myVar=@"random";
// [self setValue:@"check" forKey:@"myVar"];
NSLog(@"Private %@",myVar);
// NSLog(@"Private %@",[self valueForKey:@"myVar"]);
}
@end
当我这样做时,我得到以下编译器错误:
架构 x86_64 的未定义符号:
“_OBJC_IVAR_$_NSString.myVar”,引用自: - [NSString(TestInterface) myPrivateMethod] 在 NSSTring+TestInterface.o ld 中:未找到体系结构的符号 x86_64
谁能告诉我发生了什么?
【问题讨论】:
标签: ios objective-c macos cocoa-touch cocoa