4

最初,我有一个默认的初始化函数

 -(id) init
   {
    if (self=[super init])
    {
      ......
     }
    return self;
   }

但是,我喜欢重写 init 函数以传入自定义对象或其他对象,例如

 -(id) initWithScore:(NSString*) score
    {
    if (self=[super init])

现在有一个错误说 [super init] 函数只能用 -(id) init 函数调用。

那么我该怎么做才能修复它,以便我可以传入对象并使用 self=[super init]?

错误:无法在 init 系列中的方法之外分配给 self。

4

2 回答 2

23

我试图将一个项目转换为 ARC,并在创建一个新项目并包含旧项目的文件之后 - 我遇到的问题之一是

无法在 init 系列中的方法之外分配给“自我”

选择器名称必须以init- 不仅在我的例子中初始化选择器是:

-(id)initwithPage:(unsigned)pageNum {...}

注意小“w”。

我已将其更改为:

-(id)initWithPage:(unsigned)pageNum {...}

注意大写的“W”!

我的问题解决了。

我希望这可以帮助别人。

于 2012-12-04T14:15:12.410 回答
1

您需要在新方法中返回 id 类型的对象。

假设您声明了一个 NSString *myscore 属性,您将编写如下内容:

-(id) initWithScore:(NSString*) score
 {
    self=[super init];
    if (self)
    {
       self.myscore = score;
    }
    return self;
}
于 2012-08-20T21:21:02.943 回答