我是Objective-C的新手,但現在編碼已經很多年了。不知何故,我對Objective-C不感興趣。我搜索谷歌和stackoverflow,但我認爲我的問題只是簡單和愚蠢的,沒有人問過這個呢。Objective-C屬性訪問:發送到實例的無法識別的選擇器
我的代碼基於DateSelectionTitles示例。 http://developer.apple.com/library/ios/#samplecode/DateSectionTitles/Introduction/Intro.html
我有一個NSManagedObject
@interface Event : NSManagedObject
@property (nonatomic, retain) NSDate * date;
...
// Cache
@property (nonatomic, retain) NSString * primitiveSectionIdentifier;
所有性質鑑別儀表,都在我的數據模型定義,除了primitiveSectionIdentifier(如蘋果的例子)
但是,當我打電話
NSString *tmp = [self primitiveSectionIdentifier];
我獲得例外
Termina由於未捕獲的異常 'NSInvalidArgumentException',原因婷應用: ' - [事件primitiveSectionIdentifier]:無法識別的選擇發送到實例0x74850c0'
說得簡單:
Event *foo = [[Event alloc] init];
if (foo.primitiveSectionIdentifier) {
NSLog(@"YEAH");
}
拋出同樣的異常。所以我基本上想檢查primitiveSectionIdentifier是否爲零。但是當我訪問屬性時,它會拋出異常?在我能檢查它的價值之前,我是否需要分配每個屬性?
哪個Objective-C基礎知識我不在這裏?
非常感謝回覆!
你在'@ implementation'部分編寫了'@synthesize primitiveSectionIdentifier;'嗎? – 2012-11-01 17:19:53
您的代碼編譯時是否沒有警告? – rmaddy
如果您使用的是Xcode 4。5編譯器不會給出不合成警告(@synthesize屬性)。改爲嘗試使用self.primitiveSectionIdentifier。在Xcode 4.5發佈說明中提到https://developer.apple.com/library/mac/#releasenotes/DeveloperTools/RN-Xcode/_index.html –