---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、
<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----- -----------------
初学OC的一些注意总结3
1、 类的加载:1、先加载类的父类(查看的类是否加载可以看的类的load类方法,类只加载一次)当
程序启动的时候,就会加载一次所有的类,类加载完后会调用+ load方法,在类第一次被使用的时候,
会调用+initialize方法(相当于的类的初始化)
2、 存在分类时,分类最后加载。分类中有+initialize方法的 原有的类中的+initialize方法会被覆盖,只会
执行一次
3、可以在类的+initialize方法中监听类
4、 Description是一个NSObject方法,它又+(类对象的输出结果) 和 –(实例对象的输出结果) 方
法,返回NSString类型
5、 在description在写NSLog(@”%@”,self);会发生四循环
6、 NSLog(@”%p ”,&p); 打印出p自己的地址,NSLog不能输出中文,否者输不出来
7、 方法调用可以通过[p performSelector:(SEL(@selector[方法名(:也是方法名的一部分)]]];
8、 怎样创建SEL(对方法的一个包装,去找地址,找到地址后就可以调用方法)数据:SEL s = @Selector( 方法名);
9、 知道方法名来调用方法,方法名是字符串,将其转换成SEL的:NSSelectorToString(name);在用47中的方法
10、 每个方法中都有一个SEL即_cmd,表示当前方法不,不能直接输出,必须转换成字符串才能输出
11、内存的两大块:堆(存放动态产生的变量)和栈(存放局部变量);当程序完成后栈中的内容会自动释放,
堆中不会自己释放
12、每个对象中都含有一个引用的计数器(含4个字节),对象new、copy或alloc创建时计数器为1。
Retian +1 release -1,retain 有返回值 对象本身,release没有回值。
13、对象的销毁会调用dealloc(不能直接调用该方法),重写dealloc方法要在最后写[super dealloc]
14、 野指针:指向僵尸对象(不可用对象或内存被释放了的对象)的指针
15、OC不存在空指针错误,空指针不会报错
16、 只要你创建一个对象就责任释放它的引用
17、@class名称 仅仅告诉编译器名称是一个类(只是这样,其余的这个类中有什么是不知道的),这个只
是在循环引用被使用
18、(面试常问)Import和@class的区别:1、性能上:import相当与拷贝,如果一个类被引用的很多,当
某时候类的内容发生改变时,采用import中的全都要改变,而@class就不会,因为它做的只是告诉编译器xxx是一
个类而已,2、当在.m文件要用到该类时,必须用import 。3、@class只会告诉编译器它只是一个类,至于这个类是
怎么样的,里面有些什么,编译器不得而知,但使用Import则会将整个的信息告诉编译器。
19、 (面试常问)循环引用,解决方案是在@property中的参数一个用retain另一个用assign
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、
<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----- -----------------