A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张传宾 于 2015-1-17 18:22 编辑

【李老师视频】OC---面向对象---核心语法---类的深入研究03 类的加载与初始化中:类方法+(void)load与+(void)initialize 。
说这俩类方法是在程序启动时类加载的时候执行的类方法,顺序是父类——>子类。
那么问题来了:
既然父类、子类都有这个方法,为啥不是子类重写了父类的这个方法呢?
:(:):(*
*
*
这是个白痴问题。。。我已经解决啦。。。
*
*
*
昨晚看晕乎了,所以问的这个白痴问题。。。
*
*
*
下面是我今儿想通了的答案,请指教。。。
“就算是理解成重写了,也能说的通呀,你想,,程序一启动,每个类都会自定加载+load这个方法、父类加载父类的+load,子类加载子类的+load,就算子类重写了+load,也不会影响父类加载时使用自己的+load呀。。。
另外,也可以理解成这两个方法是任意类都有的方法,在创建时系统自带的,当程序启动时,启动程序也是执行代码、而+load正是在这段代码当中,同理+initialize是使用时的代码里的一部分。。。。
我又想、这两个方法被重写成只有一句输出:“NSLog(@”@#¥%……&“);”的时候程序照样能执行,那么?原来的代码是干嘛用的呀?啥都没干嘛...
昨晚我晕了,以为重写后父类加载的时子类重写后的+load。。。猪猪猪——>我

27 个回复

倒序浏览
1楼留给自己作为今天签到
回复 使用道具 举报
额,我还没有看到那里,不过我记得init方法不是一个对象方法么,还是不是同一个东西,先mark,看到了在说。
回复 使用道具 举报
{:3_50:} 不明觉厉
回复 使用道具 举报
liu1170486003 发表于 2015-1-17 00:02
额,我还没有看到那里,不过我记得init方法不是一个对象方法么,还是不是同一个东西,先mark,看到了在说。 ...

init是初始化分配的内存吧?initialize是第一次使用某个类的时候的初始化,加油看吧,看到这的时候给我讲解讲解。。。
回复 使用道具 举报

学到这个点儿你也不简单哦~
回复 使用道具 举报
张传宾 发表于 2015-1-17 00:06
学到这个点儿你也不简单哦~

准备接下来打排位 ;P
回复 使用道具 举报

我在无畏先锋:hug:
回复 使用道具 举报
zyp115 中级黑马 2015-1-17 03:22:06
9#
额,视频上说的是程序启动加载+load所有的类,第一次使用某个类时初始化那个类,从父类开始初始化,就像init方法一样,子类含有的属性总比父类多,所以要先初始化父类,再初始化这个类。。重写大多也是为了给子类中父类所没有的属性初始化吧,个人理解啊,我也刚看到这,零基础,说错勿怪
回复 使用道具 举报
zyp115 发表于 2015-1-17 03:22
额,视频上说的是程序启动加载+load所有的类,第一次使用某个类时初始化那个类,从父类开始初始化,就像ini ...

重写就是因为父类的方法不适合自己,所以才重写了这个方法。。。上网查了下,我觉得应该是程序刚启动,还没来得及判断这方法是不是重写前,就启动了+load和-initialize,这样子吧~
回复 使用道具 举报

好的 我也经常在那玩 不过大号在德玛西亚  无畏先锋ID:他失散多年地野爸 :lol
回复 使用道具 举报
本帖最后由 lnyg1992 于 2015-1-17 16:28 编辑

我的理解是,这两个方法是每个类里面都有的,调用也是系统自动调用,有哪几个类,就调用对应这几个类的这两个方法,就好比Person这个类有这两个方法,Student类继承自Person,Student类也有这两个方法(有这两个方法不关继承的事,是个类就有),程序加载的时候,会用Person这个类调用这方法,也会用Student这个类调用方法
回复 使用道具 举报
问得好。。。。
回复 使用道具 举报
首先load 方法是在类加载时,调用的。我们要把所有的类都加载进内存中,肯定会调用所有类中得load方法。initialize是在第一次使用某个类时,所以,你使用哪个类,肯定就会调用哪个类的Initialize方法
回复 使用道具 举报 1 0
我也还没有看到呢,OC确实难好多。
回复 使用道具 举报
lnyg1992 发表于 2015-1-17 16:25
我的理解是,这两个方法是每个类里面都有的,调用也是系统自动调用,有哪几个类,就调用对应这几个类的这两 ...

我发现我问了一个白痴的问题额。。。。就算是理解成重写了,也能说的通呀,你想,,程序一启动,每个类都会自定加载+load这个方法、父类加载父类的+load,子类加载子类的+load,就算子类重写了+load,也不会影响父类加载时使用自己的+load呀。。。昨晚我晕了,以为重写后父类加载的时子类重写后的+load。。。猪猪猪——>我
回复 使用道具 举报
lnyg1992 发表于 2015-1-17 16:25
我的理解是,这两个方法是每个类里面都有的,调用也是系统自动调用,有哪几个类,就调用对应这几个类的这两 ...

这两个方法,被老师重写成只有一句话了:“NSLog(@“#¥%&*)&”);”这样程序都能运行,那原来方法里面的代码是什么作用啊?有没有这俩方法完全没影响嘛...
回复 使用道具 举报

问的很白痴。。。真的很白痴。。。。帖子内容我又重新编辑了一下。。。
回复 使用道具 举报
满大街的谎言。 发表于 2015-1-17 17:17
我也还没有看到呢,OC确实难好多。

不难不难、好好看、认真敲,不难的,别怕。
回复 使用道具 举报
mengxingdong 发表于 2015-1-17 17:05
首先load 方法是在类加载时,调用的。我们要把所有的类都加载进内存中,肯定会调用所有类中得load方法。ini ...

你讲的对、可是。。。可是这俩方法被老师重写的只有一句输出了:“NSLog(@“#¥%&*)&”);”这样程序都能运行,那原来方法里面的代码是什么作用啊?有没有这俩方法完全没影响嘛...
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马