object c 中经常出现的initWith... 和....With...
objectc中经常出现的initWith...和....With...是什么意思◑▂◐初学者,求解释,...
object c 中经常出现的initWith... 和....With... 是什么意思◑▂◐初学者,求解释,
展开
2个回答
展开全部
init代表的是初始化方法。
initWith。。。
代表的是带参的初始化方法。
例如:
UIView *view = [[UIView alloc] init];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)];
这两个有什么区别呢??
明显,下面那个initWithFrame是带一个名为Frame参数的。
需要我们传参给初始化方法给他。
那么具体的区别就在于你想不想再初始化的时候就赋值frame值。
如果你不想再初始化的时候赋值frame,那就用第一个初始化方法,是最纯洁的初始化方法,什么参数都不带。
你想在后面赋值frame可以这样:
UIView *view = [[UIView alloc] init];
view.frame = CGRectMake(0,0,100,100);
上面的两句话和UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)];是一样的。
注意:
很重要的一点:所有类都继承自NSObject,而NSObject里面有init。
所以所有类都可以拥有init这个方法。
所以说init是最纯洁的初始化方法,
起码比文章越轨纯洁多了。。。。
initWith。。。
代表的是带参的初始化方法。
例如:
UIView *view = [[UIView alloc] init];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)];
这两个有什么区别呢??
明显,下面那个initWithFrame是带一个名为Frame参数的。
需要我们传参给初始化方法给他。
那么具体的区别就在于你想不想再初始化的时候就赋值frame值。
如果你不想再初始化的时候赋值frame,那就用第一个初始化方法,是最纯洁的初始化方法,什么参数都不带。
你想在后面赋值frame可以这样:
UIView *view = [[UIView alloc] init];
view.frame = CGRectMake(0,0,100,100);
上面的两句话和UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)];是一样的。
注意:
很重要的一点:所有类都继承自NSObject,而NSObject里面有init。
所以所有类都可以拥有init这个方法。
所以说init是最纯洁的初始化方法,
起码比文章越轨纯洁多了。。。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-02-17 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
cocoachina论坛中有详细的解释。init是和超类同名的初始化方法,initWith...之类的就是根据你自己想要对类实例变量,进行初始化的方法,需要在某个初始化方法方法中调用一次超类的init并赋值给self,这样子类就具有父类的特性了,然后在添加子类自己的特性。这只是个人理解。
相比较于C++,init更像是缺省构造,initWith...像是提供实参的构造。和c++ 一样,基类的构造发生在子类构造之前,如果没有指名基类的构造方式会自动使用缺省构造,Objective_C中只是要明显的调用下而已,相比较而言应该更好理解
相比较于C++,init更像是缺省构造,initWith...像是提供实参的构造。和c++ 一样,基类的构造发生在子类构造之前,如果没有指名基类的构造方式会自动使用缺省构造,Objective_C中只是要明显的调用下而已,相比较而言应该更好理解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询