代码之家  ›  专栏  ›  技术社区  ›  Mugunth

在目标c中分配指向派生类的基类指针

  •  0
  • Mugunth  · 技术社区  · 14 年前

    我有一个名为ModelBase的基类和一个名为“Person”的派生类。

    -(Person*) init {
         if(self = [super init])
             return self;
    
         return nil; 
    }
    

    然而,Objective C抱怨说 不兼容的Objective-C类型正在初始化“struct ModelBase*”,应为“struct Person*”。我只是用[super init]初始化self,它初始化指向派生类的基类指针。

    我错过了什么?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Jason Foreman    14 年前

    您是否声明了要返回的ModelBase init方法(ModelBase*)?如果是,则改为return(id)。您会注意到,Cocoa中的大多数初始值设定项返回(id)正是出于这个原因。

    而不是

    - (ModelBase*)init;
    

    - (id)init;