2011-09-10 30 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];