我子類的NSDate類和在子類的類的新方法顯示在Objective-C警告
@interface NSDate (NSDateAdditions) section.
下,加入我的方法「指明MyDate」時,我想用這個方法,我輸入「NSDateAdditions.h」和使用它。 問題是我總是得到警告「'NSDate'可能不會響應'myDate'」
有沒有辦法擺脫這種警告?
我子類的NSDate類和在子類的類的新方法顯示在Objective-C警告
@interface NSDate (NSDateAdditions) section.
下,加入我的方法「指明MyDate」時,我想用這個方法,我輸入「NSDateAdditions.h」和使用它。 問題是我總是得到警告「'NSDate'可能不會響應'myDate'」
有沒有辦法擺脫這種警告?
對不起,根據你寫的你沒有分類NSDate。你在做什麼是你添加NSDateAdditions類別。即使這樣,似乎並不完全正確,因爲我不明白「部分」部分。編譯器應該抱怨。你應該做這種方式來代替:
@interface NSDateAdditions:NSDate
//declare your method here.
@end;
-1'NSDate'是一個類集羣,不應該被分類。您需要的任何自定義日期功能都可以添加一個類別。 –
感謝您提供信息。我其實不知道NSDate是一種不應該被分類的特殊類。我只是想展示繼承一個類的正確方法(實際上是語法)。 –
更多的信息在這裏:http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/doc/uid/20000188-133503 –
當你寫:
@interface NSDate (NSDateAdditions)
你沒有繼承NSDate
。相反,您要將名爲NSDateAdditions
的category添加到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];
你能編輯問題並粘貼類別聲明?此外,它看起來像你還沒有宣佈一個子類;你已經聲明瞭一個類別。 – 2011-09-10 10:41:02