0

我已经创建了一个UIView子类并想在 上执行一个方法initWithFrame:,但是没有调用此方法。

当我调用initWithCoder:正在执行的方法时,代码崩溃并显示此错误:

由于未捕获的异常“NSGenericException”而终止应用程序,原因:“此编码器要求从初始化编码器方法返回替换的对象:”

我的代码是:

-(void)initialize
{
    //code
}

-(id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self initialize];

        // Initialization code
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)aCoder
{ 
    self = [super initWithCoder:aCoder];

    if(self)
    {
        [self initialize];
    }
    return self;
}
4

3 回答 3

6

你没有self从你的initWithCoder:方法中返回。

于 2013-04-09T08:25:32.207 回答
5

也许你在 IB 或 storyBoard 中指定了这个 UIView,所以会调用 initWithCoder。删除 initWithCoder 并使用 awakeFromNib

    - (void)awakeFromNib{
    //custom init code
   [self initialize];
    }
于 2013-04-09T08:33:45.300 回答
0

试试这个。

- (id)initWithCoder:(NSCoder *)aCoder
    { 
        self = [super initWithCoder:aCoder];

        if(self)
        {

        }
    return self;
    }
于 2013-04-09T08:33:53.207 回答