我想创建一个自定义对象,它只是继承NSString类并重写'description'方法。为什么我会得到“不兼容的指针类型”?
当我编译,但是,我得到一个警告:
不兼容的指针类型初始化 'OverrideTester *' 类型的表达式 '的NSString *'
这里是我的代码:
的main.m
#import <Foundation/NSObject.h>
#import <Foundation/NSString.h>
#import <Foundation/NSAutoreleasePool.h>
#import "OverrideTester.h"
int main (int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *str = @"Programming is fun";
OverrideTester *strOverride = @"Overriding is fun";
NSLog (@"%@", str);
NSLog (@"%@", strOverride);
[pool drain];
return 0;
}
OverrideTester.h
#import <Foundation/Foundation.h>
@interface OverrideTester : NSString
-(void) description;
@end
OverrideTester.m
#import "OverrideTester.h"
@implementation OverrideTester
-(void) description
{
NSLog(@"DESCRIPTION!\n");
}
@end
您当然可以创建NSString或任何其他类集群的任意子类。您只需重写该类核心中的方法。然而,对类集群进行子类化通常是非常罕见的,而且绝对不是**应该简单地作为学习练习来完成! – bbum 2011-03-21 19:39:25
我在这里滥用了“任意”这个词。我的意思是“只要把'NSString'扔到你的定义上。” – 2011-03-21 19:40:21