gpt4 book ai didi

objective-c - 我如何子类化 NSDate?

转载 作者:太空狗 更新时间:2023-10-30 04:00:46 26 4
gpt4 key购买 nike

我第一次尝试对 NSDate 进行子类化,为它提供我需要的 2 个方法。编译正常,但在运行时我尝试访问它时出现错误。

假设我只想要子类中未修改的当前日期:

[myNSDate date];

我得到了错误

-[NSDate initWithTimeIntervalSinceReferenceDate:]: method only defined for 
abstract class. Define -[myNSDate initWithTimeIntervalSinceReferenceDate:]!

有什么不同?

最佳答案

NSD 的回答是正确的,我只是尽量简单地重申一下。 NSDate 不是一个可以轻松子类化的简单类。这是一个class cluster ,简而言之,当你得到一个 NSDate 类型的值时,它实际上是一个不同的私有(private)类的实例,该类具有与 NSDate 相同的接口(interface)。换句话说,NSDate 不是您想要子类化的东西。

如果您只想添加方法(而不是实例变量),您可以使用类别轻松地做到这一点:

@interface NSDate (MyExtensions)
- (void) doFoo;
@end

@implementation NSDate (MyExtensions)
- (void) doFoo {
NSLog(@"Foo");
}
@end

现在您可以调用[date doFoo]。另见 class cluster subclassing tutorial迈克·阿什 (Mike Ash)。

关于objective-c - 我如何子类化 NSDate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2657275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com