为什么我会得到"不兼容的指针类型"?

eas*_*de5 1 compiler-errors objective-c foundation

我正在尝试创建一个自定义对象,它只是继承NSString类并覆盖'description'方法.

然而,当我编译时,我收到一个警告:

不兼容的指针类型使用类型为"NSString*"的表达式初始化"OverrideTester*"

这是我的代码:

的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;
}
Run Code Online (Sandbox Code Playgroud)

OverrideTester.h

#import <Foundation/Foundation.h>

@interface OverrideTester : NSString
-(void) description;
@end
Run Code Online (Sandbox Code Playgroud)

OverrideTester.m

#import "OverrideTester.h"

@implementation OverrideTester

-(void) description

{
    NSLog(@"DESCRIPTION!\n");
}

@end
Run Code Online (Sandbox Code Playgroud)

Rob*_*ier 5

NSString是类集群的一部分.你不能只创建它的任意子类,当你这样做时,你不能为它们分配常量字符串(它们是类型NXConstantString).请参阅NSString文档中的Subclassing Notes.通常你不想要子类NSString.对于大多数问题有更好的解决方案.