Objective C自定义初始化程序不起作用?

时间:2014-07-29 21:47:38

标签: ios objective-c

我正在尝试将NSDate子类化以添加毫秒功能,它看起来像这样:

部首:

#import <Foundation/Foundation.h>

@interface DTDate : NSDate

- (id)initWithJavaMillis:(NSInteger)val;
- (NSInteger)getJavaMillis;

@end

实现:

#import "DTDate.h"

@implementation DTDate
{
    NSInteger milliseconds;
}

- (id)initWithJavaMillis:(NSInteger)val
{
    // Main time initialized with whole seconds
    self = [super initWithTimeIntervalSince1970:(NSTimeInterval)(val / 1000)];

    // Also hold on to millis part
    if (self)
    {
        milliseconds = val % 1000;
    }

    return self;
}

- (NSInteger)getJavaMillis
{
    return [super timeIntervalSince1970] * 1000 + milliseconds;
}

@end

现在我正试图像这样使用它:

return [DTDate initWithJavaMillis:retVal];

No known class method for selector 'initWithJavaMillis:'

但它不起作用。我之前从未使用过自定义初始化程序,因此它应该是简单的。有什么指针吗?

1 个答案:

答案 0 :(得分:1)

您需要将init消息发送到实例,而不是发送给班级:

[[DTDate alloc] initWithJavaMillis:retVal];

虽然我建议category而不是子类化。