我第一次尝试subClassed NSDate给它我需要的2种方法.编译很好,但在运行时我尝试访问它我得到一个错误.
让我们说我只想要在subClass中未修改的当前日期:
[myNSDate date];
Run Code Online (Sandbox Code Playgroud)
我收到了错误
-[NSDate initWithTimeIntervalSinceReferenceDate:]: method only defined for
abstract class. Define -[myNSDate initWithTimeIntervalSinceReferenceDate:]!
Run Code Online (Sandbox Code Playgroud)
有什么不同吗?
NSD的答案核心,我只想简单地重申一下.NSDate不是一个简单的类,你可以很容易地子类.它是一个类集群,简而言之,当你得到一个类型的值时NSDate,它实际上是一个具有相同接口的不同私有类的实例NSDate.换句话说,NSDate不是你想要的子类.
如果您只想添加方法(而不是实例变量),可以使用类别轻松完成:
@interface NSDate (MyExtensions)
- (void) doFoo;
@end
@implementation NSDate (MyExtensions)
- (void) doFoo {
NSLog(@"Foo");
}
@end
Run Code Online (Sandbox Code Playgroud)
现在你可以打电话了[date doFoo].另请参阅Mike Ash 的类集群子类化教程.
| 归档时间: |
|
| 查看次数: |
1427 次 |
| 最近记录: |