黑马程序员技术交流社区
标题:
self关键字
[打印本页]
作者:
sc33370
时间:
2016-6-22 19:32
标题:
self关键字
调用父类的方法。self = [superinit] 这里不是判断self与[superinit]是否相等,而是判断是否可以成功初始化。
[super init]:父类初始化成功的话,通过=给self,这样self成为一个非空对象,整个来说即非false(非NO)。
作者:
SSIrreplaceable
时间:
2016-6-23 08:14
构造方法必须要先调用父类的+init方法,才可以后续的操作。
作者:
M.W
时间:
2016-6-23 11:09
是的,这里确实是赋值的操作。此时self在重写的init方法中,指代的是当前的对象。
所以其实这里不将父类的初始化对象赋值给self也是可以初始化当前的子类对象的,即:if ([supper init]){}
但是就会存在一个问题:-->子类将丢失父类中初始化的变量数据。
如:Student继承自Person
Person *p = [Person alloc] init];
p.age = 10;
...
在子类的重写构造方法中如果不将[supper init];赋值给self,则子类继承到的age属性的值将丢失
作者:
选择天涯
时间:
2016-6-23 17:40
使用时注意当前环境,在对象方法中使用代表当前对象,在类方法中使用,代表当前类。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2