Xcode无法识别自定义类方法

时间:2011-04-08 10:20:31

标签: objective-c cocoa cocoa-touch xcode

我写了以下自定义类:

AKRelativeDates.h

#import <Foundation/Foundation.h>
#import "NSDate-Utilities.h"

@interface AKRelativeDates

- (NSString *)relativeDateFromDate:(NSDate *)date in24hFormat:(BOOL)in24hFormat capitalized:(BOOL)capitalized;

@end

AKRelativeDates.m

#import "AKRelativeDates.h"

@implementation AKRelativeDates

- (NSString *)relativeDateFromDate:(NSDate *)date in24hFormat:(BOOL)in24hFormat capitalized:(BOOL)capitalized
{
    // method implementation removed
    return @"test";
}

@end

我已经导入了头文件,该类被识别,但方法不是。我做错了吗?

3 个答案:

答案 0 :(得分:4)

你遗漏了标题中的一些内容:

#import <Foundation/Foundation.h>
#import "NSDate-Utilities.h"

@interface AKRelativeDates : NSObject    //Follow the class name with the superclass.

{
    //Now enclose any class objects if any - if none then brackets are optional
}

//And now time for the method declarations:

- (NSString *)relativeDateFromDate:(NSDate *)date in24hFormat:(BOOL)in24hFormat capitalized:(BOOL)capitalized;

@end

另外,如果它是一个类方法(即你不想在使用这个方法之前创建对象),那么用'+'替换' - '

答案 1 :(得分:1)

正如乔丹所说,你的标题不完整。

但是,您也不会将其导入到使用该方法的源代码文件中。

答案 2 :(得分:0)

  

@JeremyP是的,我收到以下警告:'AKRelativeDates'可能无法响应' + relativeDateFromDate:in24hFormat:capitalized:',再加上另一个,找不到该方法,返回类型默认为'id'。 Xcode代码完成不建议使用此方法

根据你的回复,你可能会这样使用它:

[AKRelativeDates relativeDateFromDate:theDate in24hFormat:theIn24hFormat capitalized:theCapitalized];

您正在从类访问该方法,但您将该方法声明为实例方法。 @Jordan在他的最后一句话中指出了正确的答案。我只是想更加具体。

将.h和.m文件中的 - 更改为+,如下所示:

+ (NSString *)relativeDateFromDate:(NSDate *)date in24hFormat:(BOOL)in24hFormat capitalized:(BOOL)capitalized