可不可以这样理解,就是自己的初始化方法其实和普通的方法一样,只有调用了在NSObject里的init方法后才能叫做自己的初始化方法
其实我还不是特别理解,希望又大神可以指导一下
5 个解决方案
#1
其实就是一个类继承,子类调用父类的方法,因为你重载了父类的init函数,正常情况下,在对象初始化时就会进入你的init方法,父类的方法不会被调用到,而父类有一些初始化操作也是必须执行的,因此这种时候,就优先让父类初始化完毕,在执行子类自己的方法。
#2
是不是像这样的方法
- (id) initWithAge:(int)age;
如果写成这样
- (id) a :(int)age;
只要是这个方法里最后返回了self就是一个初始化方法了?(ps:我知道这样的命名是不对的,就是想知道是不是只要是return self,这个方法就是一个初始化方法了???)
- (id) initWithAge:(int)age;
如果写成这样
- (id) a :(int)age;
只要是这个方法里最后返回了self就是一个初始化方法了?(ps:我知道这样的命名是不对的,就是想知道是不是只要是return self,这个方法就是一个初始化方法了???)
#3
不是的,跟名字,返回值都没关系,就看你的方法是不是用来初始化的,仅此而已。
如果你约定了- (id) a :(int)age;是你这个对象的初始化方法,那么- (id) a :(int)age;就是初始化方法。
NSObject的初始化方法是-(id)init,所以后续的继承也就有了这个初始化方法,无非如果你的子类没实现-(id)init,那么将直接会调用到父类的-(id)init。
#4
谢谢你的回答!
#5
@dream238,回答得非常到位!!!
#1
其实就是一个类继承,子类调用父类的方法,因为你重载了父类的init函数,正常情况下,在对象初始化时就会进入你的init方法,父类的方法不会被调用到,而父类有一些初始化操作也是必须执行的,因此这种时候,就优先让父类初始化完毕,在执行子类自己的方法。
#2
是不是像这样的方法
- (id) initWithAge:(int)age;
如果写成这样
- (id) a :(int)age;
只要是这个方法里最后返回了self就是一个初始化方法了?(ps:我知道这样的命名是不对的,就是想知道是不是只要是return self,这个方法就是一个初始化方法了???)
- (id) initWithAge:(int)age;
如果写成这样
- (id) a :(int)age;
只要是这个方法里最后返回了self就是一个初始化方法了?(ps:我知道这样的命名是不对的,就是想知道是不是只要是return self,这个方法就是一个初始化方法了???)
#3
不是的,跟名字,返回值都没关系,就看你的方法是不是用来初始化的,仅此而已。
如果你约定了- (id) a :(int)age;是你这个对象的初始化方法,那么- (id) a :(int)age;就是初始化方法。
NSObject的初始化方法是-(id)init,所以后续的继承也就有了这个初始化方法,无非如果你的子类没实现-(id)init,那么将直接会调用到父类的-(id)init。
#4
谢谢你的回答!
#5
@dream238,回答得非常到位!!!