因为用于基础类的.m文件(地说的NSString)是不可用的,我在想,如果我可以宣布延期,在同一类中声明一个类的.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{
[email protected]"random";
// [self setValue:@"check" forKey:@"myVar"];
NSLog(@"Private %@",myVar);
// NSLog(@"Private %@",[self valueForKey:@"myVar"]);
}
@end
当我做这样我得到以下编译器错误:
Undefined symbols for architecture x86_64:
"_OBJC_IVAR_$_NSString.myVar", referenced from: -[NSString(TestInterface) myPrivateMethod] in NSSTring+TestInterface.o ld: symbol(s) not found for architecture x86_64
有人能告诉我发生了什么事吗?
好的。但为什么'setValue:ForKey:'在'valueForKey:'时会抛出异常? – Rakesh
@Rakesh IDK。我刚刚尝试过,对我而言,它确实引发了一个例外。 – 2013-06-12 12:39:21
可能是我的粗心大意,它也给我带来了不便。谢谢。 – Rakesh