爲什麼在下面的例子中沒有爲myString
合成一個setter?以下基本職責myString
爲nil
。試圖使用設置器[self setMyString:s];
會導致無法識別的選擇器異常。在objective-c中shadowing @property的問題
// in .h file
@interface MyClass
@property (nonatomic, readonly) NSString *myString;
@end
// in .m file
@interface MyClass (MyCategory)
@property (nonatomic, copy) NSString *myString;
@end
@implementation MyClass
@synthensize myString;
- (void) someMethod:(NSString *) s {
myString = [s copy];
// why is myString nil here?
}
@end
編輯:問題是用gdb。 po myString
印刷Can't print description of a NIL object.
。但NSLog(@"myString: %@", myString);
打印了預期值。
我不知道這件事。看起來它可以派上用場。你提到它是明確支持的 - 你有鏈接到文檔的嗎?提前致謝。 – 2012-02-13 21:30:38
@Will:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW19 – 2012-02-13 21:32:37
@WillPragnell閱讀[擴展](https://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html)。 *類擴展的一個常見用途是重新聲明公開聲明爲只讀的屬性,只讀作爲readwrite ... * – Caleb 2012-02-13 21:34:03