initWithFrame没有在UIVIew中执行

Anu*_*hra 0 objective-c ios

我已经创建了一个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;
}
Run Code Online (Sandbox Code Playgroud)

jrt*_*ton 6

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

  • @anupam,你确定吗?你有没有设置断点 - 初始化方法以确保?看起来你在初始化方法中使用了与UIView子视图相关的代码,在调用initWithCoder时,属性为nil指针.它们将仅在awakeFromNib之后初始化 (2认同)

Ale*_*lex 5

也许您在IB或storyBoard中指定此UIView,因此调用initWithCoder.删除initWithCoder并使用awakeFromNib

    - (void)awakeFromNib{
    //custom init code
   [self initialize];
    }
Run Code Online (Sandbox Code Playgroud)