首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标C: init和awakeFromNib

目标C: init和awakeFromNib
EN

Stack Overflow用户
提问于 2013-08-06 07:56:02
回答 1查看 811关注 0票数 3

我最近研究了一些基于Cocoa的开源项目。我看到很多程序在awakeFromNib中都有初始化代码,很少使用指定的初始化器。我习惯这样做:

  • 在已重写的指定初始化程序中:执行所有非Nib操作。
  • 在awakeFromNib中:做所有与Nib相关的事情

这种做法不对吗?

EN

回答 1

Stack Overflow用户

发布于 2013-08-06 08:00:55

是的,这是正确的,所有与nib相关的东西都应该在awakeFromNib方法中完成。当它被调用时,您已经从nib初始化并加载了视图,因此您可以配置和使用它。

对于初始化程序,请检查以下问题:iOS: UIView subclass init or initWithFrame:?

指定的初始化程序是所有其他初始化程序都必须调用的初始化程序。UIView和子类有点不寻常,因为它们实际上有两个这样的初始化器:-initWithFrame:和-initWithCoder:,这取决于视图是如何创建的。如果要在代码中实例化视图,则应该重写-initWithFrame:;如果要从nib加载视图,则重写-initWithCoder:。或者,您可以将代码放在第三个方法中,并覆盖这两个初始化器,以便它们调用您的第三个方法。事实上,这通常是推荐的策略。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18074601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档