对于单个视图应用程序,添加了一个DrawView类,它是UIView类的子类。
它被用作应用程序的主视图,因此这个类的drawRect
方法效果很好,可以绘制东西,但是Xcode生成的代码有一行“//初始化代码”指示在initWithFrame
内部放置初始化代码,但是我在那里放了一些代码并且没有调用,并且在那里设置了断点,但是它永远不会停在那里?然后我使用通常的方法添加init
并且它也没有被调用?
答案 0 :(得分:3)
尝试覆盖 - (id)initWithCoder:(NSCoder *)编码器。我相信当从一个nib加载一个视图时,它使用这个init方法。请参阅this问题。
答案 1 :(得分:1)
initWithCoder: - 如果从Interface Builder nib文件加载视图,建议您实现此方法,并且您的视图需要自定义初始化.nib加载代码不使用initWithFrame:方法来实例化新的视图对象。相反,它使用作为NSCoding协议一部分的initWithCoder:方法。 nib加载代码不使用initWithFrame:方法来实例化新的视图对象。相反,它使用作为NSCoding协议一部分的initWithCoder:方法。 apple's doc
initWithFrame: - 视图的默认初始化方法,必须先将新视图对象插入窗口的视图层次结构中,然后才能使用它。如果以编程方式创建视图对象,则此方法是UIView类的指定初始值设定项。
此处提供更多信息:overriding methods
乐意提供帮助:)