我是UIImageVIEw的子类,我想覆盖initWithImage,在使用提供的图像拥有超类init之后添加我自己的初始化代码.
然而,没有UIImageVIEw的文档指定的初始化程序,所以我应该调用哪个超类初始化程序来确保我的子类被正确初始化?
如果一个类没有指定一个初始化程序,我可以:
>假设可以安全地调用任何类的(UIImageVIEw)初始化器?
>看看指定的初始化程序的超类(UIVIEw)?
在这种情况下,似乎#1将是答案,因为在我重写的初始化程序中执行以下 *** 作是有意义的:
- (ID)initWithImage:(UIImage *)image{ self = [super initWithImage:image]; if (self) { // DO MY EXTRA INITIAliZATION HERE } return self;}解决方法 UIImageVIEw有两个初始化器,因此您可能需要确保您的子类处理这两个初始化路径.
您可以简单地声明-initWithImage:是您指定的初始化程序,并且不支持所有其他初始化程序.
此外,您可以实现-initWithImage:highlightimage:并抛出一个异常来表示它不受支持.
或者,您可以声明-initWithImage:highlightimage:作为您指定的初始化程序,并使用-initWithImage:调用指定的初始化程序.
或者,您可能会发现,无论您的类是使用-initWithImage初始化还是使用-initWithImage:highlightimage:,都可以调用-initWithImage:initializer.
总结以上是内存溢出为你收集整理的objective-c – 如果一个类没有记录的指定的初始化器怎么办?全部内容,希望文章能够帮你解决objective-c – 如果一个类没有记录的指定的初始化器怎么办?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)