因爲用於基礎類的.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