基本上,我有一个名为 BaseObject 的基类。第二种类型的类称为 RedObject、BlueObject。它们是 BaseObject 类的子类。
因此,在 RedObject.h 中,它具有:
#import "BaseObject.h"
@interface RedObject : BaseObject
在 BlueObject.h 中,它具有:
#import "BaseObject.h"
@interface BlueObject : BaseObject
我还有第三种类型的类,称为 MyObject。在 MyObject.h 文件中,它具有:
#import "RedObject.h"
#import "BlueObject.h"
@interface MyObject : NSObject
-(id)init:(char)objectType;
在 MyObject.m 文件中,它具有:
-(id)init:(char)objectType
{
self = [super init];
switch (objectType)
{
case 'R':
{
return [[RedObject alloc]init]; // this is where the yellow warning message 1
}
case 'B':
{
BlueObject *blueObject = [[BlueObject alloc]init];
return blueObject; // this is where the yellow warning message 2
}
default:
break;
}
return self;
}
警告消息 1:不兼容的指针类型从结果类型为 'MyObject*' 的函数返回RedObject '
警告消息 2:不兼容的指针类型从结果类型为“MyObject*”的函数返回BlueObject _strong'
当我尝试从调用者类实例化 MyObject 的实例时,它工作正常。我可以验证我已经访问了 RedObject/BlueObject 和 BaseObject 的所有属性。但不确定如何解决黄色警告。或者如果我错过了什么?
MyObject *myObject = [[MyObject alloc]init:'R']; // or 'B'