重写iOS中的默认初始化函数

重写iOS中的默认初始化函数,ios,Ios,最初,我有一个默认的init函数 -(id) init { if (self=[super init]) { ...... } return self; } 但是,我喜欢重写init函数以传入自定义对象或其他对象 像 现在有一个错误说[super init]函数只能用-(id)init函数调用 那么我该怎么做才能修复它,以便传入对象并使用self=[super init] 错误:无法在init系列中的方法之外分配给self。您需要在新

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

 -(id) init
   {
    if (self=[super init])
    {
      ......
     }
    return self;
   }
但是,我喜欢重写init函数以传入自定义对象或其他对象 像

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

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


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

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

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

-(id) initWithScore:(NSString*) score
 {
    self=[super init];
    if (self)
    {
       self.myscore = score;
    }
    return self;
}

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

无法在init族中的方法之外分配给“self”

选择器名称必须以
init
开头-不仅在我的示例中,init选择器是:

-(id)initwithPage:(unsigned)pageNum {...}
注意小的“w”

我已将其更改为:

-(id)initWithPage:(unsigned)pageNum {...}
注意大写字母“W”

我的问题解决了


我希望这对某人有所帮助。

请粘贴准确的错误。同时告诉我们您来自哪个类。jason,如果我的asnwer解决了您的问题,那么接受我的asnwer作为解决问题的人可能不是一个坏主意。谢谢。您的第一个方法仍然无法分配给init族中方法之外的“self”。第二种方法,该类不会运行。你能编辑你的帖子并向我们展示你的完整initWithCore方法吗?还要检查你的输入是否正确:你的答案是错误的。此行:self=[super init];仍然给出相同的错误“无法在init族中的方法之外分配给‘self’”。下次你应该在XCode中验证你的答案。我需要大写“W”hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!很好的提示,它解决了我的问题。。。但真的是苹果吗。。?你不能给我们一个更清楚的错误消息,告诉我们“你的选择器必须以'init'开头?!”?!Grrrrr。。讨厌这样的环境…非常感谢你…真烦人。我们应该得到比这更有意义的错误消息。
-(id)initWithPage:(unsigned)pageNum {...}