2011-09-10 35 views
0

我子類的NSDate類和在子類的類的新方法顯示在Objective-C警告

@interface NSDate (NSDateAdditions) section. 

下,加入我的方法「指明MyDate」時,我想用這個方法,我輸入「NSDateAdditions.h」和使用它。 問題是我總是得到警告「'NSDate'可能不會響應'myDate'」

有沒有辦法擺脫這種警告?

+2

你能編輯問題並粘貼類別聲明?此外,它看起來像你還沒有宣佈一個子類;你已經聲明瞭一個類別。 – 2011-09-10 10:41:02

回答

-1

對不起,根據你寫的你沒有分類NSDate。你在做什麼是你添加NSDateAdditions類別。即使這樣,似乎並不完全正確,因爲我不明白「部分」部分。編譯器應該抱怨。你應該做這種方式來代替:

@interface NSDateAdditions:NSDate 
//declare your method here. 
@end; 
+0

-1'NSDate'是一個類集羣,不應該被分類。您需要的任何自定義日期功能都可以添加一個類別。 –

+0

感謝您提供信息。我其實不知道NSDate是一種不應該被分類的特殊類。我只是想展示繼承一個類的正確方法(實際上是語法)。 –

+0

更多的信息在這裏:http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/doc/uid/20000188-133503 –

2

當你寫:

@interface NSDate (NSDateAdditions) 

你沒有繼承NSDate。相反,您要將名爲NSDateAdditionscategory添加到NSDate類。通過這樣做,該班級仍稱爲NSDate,並將該類別中聲明的方法添加到NSDate

您可以在類別中聲明類和/或實例方法。例如:

// NSDate+NSDateAdditions.h 

@interface NSDate (NSDateAdditions) 
- (id)anInstanceMethod; 
+ (id)aClassMethod; 
@end 

和:

// SomeImplementationFile.m 

#import <UIKit/UIKit.h> 
#import "NSDate+NSDateAdditions.h" 

// in some method… 
{ 
    NSDate *someDate = [NSDate aClassMethod]; 

    NSDate *anotherDate = [NSDate date]; 
    id someResult = [anotherDate anInstanceMethod]; 
} 

沒有看到您的類別聲明(以及如何你使用它),這是很難說什麼是你的代碼錯誤。需要檢查的一件事是您是否聲明瞭類或實例方法 - 類方法聲明爲+,而實例方法聲明爲-。當使用一個類的方法,您將消息發送到類,即NSDate

// Send a message to the class 
    NSDate *someDate = [NSDate aClassMethod]; 

當使用實例方法,您將消息發送到先前創建的實例:

// Create an instance 
    NSDate *anotherDate = [NSDate date]; 

    // Send a message to the instance 
    id someResult = [anotherDate anInstanceMethod];