ios – 为什么两个init函数都被调用

ios – 为什么两个init函数都被调用,第1张

概述如果我有一个像这样设置的类来自定义UIView. @interface myView:UIView - (id)init { self = [super init]; if(self){ [self foo]; } return self;}- (id)initWithFrame:(CGRect)frame{ self = [supe 如果我有一个像这样设置的类来自定义UIVIEw.

@interface myVIEw:UIVIEw

- (ID)init {    self = [super init];    if(self){        [self foo];    }    return self;}- (ID)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    if (self) {        // Initialization code        [self foo];    }    return self;}-(voID) foo{   //Build UIVIEw here }

为什么我会使用foo两次

myVIEw *aVIEw = [[myVIEw alloc]init]];

要么

myVIEw *aVIEw = [[myVIEw alloc]initWithFram:aFrame];
解决方法@H_404_29@ UIVIEw init调用UIVIEw initWithFrame:.由于您重写了两者,因此调用init方法会导致调用initWithFrame:方法:

换句话说:你的init调用UIVIEw init. UIVIEw init调用initWithFrame:.由于您覆盖了initWithFrame:,因此调用了您的initWithFrame:,后者又调用UIVIEw initWithFrame:.

解决方案,因为你的initWithFrame:将永远被调用,是从你的init方法中删除对foo的调用.

总结

以上是内存溢出为你收集整理的ios – 为什么两个init函数都被调用全部内容,希望文章能够帮你解决ios – 为什么两个init函数都被调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1056788.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存