最初,我有一个默认的初始化函数
-(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系列中的方法之外分配给自己。
答案 0 :(得分:23)
我试图将一个项目转换为ARC,并在创建一个新项目并包含旧文件后 - 我得到的一个问题是
无法在init系列中的方法之外分配给“self”
选择器名称必须以init
开头 - 不仅在我的情况下,init选择器是:
-(id)initwithPage:(unsigned)pageNum {...}
注意小'w'。
我已将其更改为:
-(id)initWithPage:(unsigned)pageNum {...}
注意首都'W'!
我的问题已经解决了。
我希望这有助于某人。
答案 1 :(得分:1)
您需要在新方法中返回id类型的对象。
假设您已声明了NSString * myscore属性,您将编写如下内容:
-(id) initWithScore:(NSString*) score
{
self=[super init];
if (self)
{
self.myscore = score;
}
return self;
}