我子类的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