class 的使用 @class 类名 作用? 表示告诉编译器这是一个类 不需要进去检查类中的属性与方法 #import 类名.h与@class的区别 1)作用: @class 类名 表示告诉编译器这是一个类 不需要进去检查类中的属性与方法 #import 作用是替换头文件里面的内容 2)效率: @class 但是要在.m文件中引入类的头文件 头文件编译的时候不会重新编译引入类中的内容只会在运行的时候进行编译 能提高系统运行的效率
@class 解决循环引用问题 1,当两个类互相调用的时候,采用其中一个参数将retain 换成 assign 但是换成assign参数的类在dealloc重写方法中不能将另一个类release. 2,如果不实用上面那种方法就会造成两个类创建的对象的计数器都是1(因为没有执行dealloc方法,所以也没有执行另一个对象的release) 而造成内存泄露,所以还要在释放其中一个类中的对象.
autorelease的原理?
file:///var/folders/fr/vw5hgn6n7cvgv3mbfh3wsr3w0000gn/T/WizNote/0c65dc94-8468-4404-86bf-5c8a4bf9e69b/index_files/364285c8-c059-4f18-b480-70d1561d677a.png
在栈区的上面加入一个自动释放池.在释放池结束的时候对释放池里面的每一个对象发送一条release消息. autorelease的使用? autoreleasepool{ 这里放创建的对象. } autorelease使用的注意事项:
file:///var/folders/fr/vw5hgn6n7cvgv3mbfh3wsr3w0000gn/T/WizNote/0c65dc94-8468-4404-86bf-5c8a4bf9e69b/index_files/99b9ba02-1fe8-4975-a94b-b89b09661135.png
autorelease的应用场景:
如何快速创建一个对象 - -(intencetype)person{
- return [[ [self alloc init autorelease];
- }
ARC 是IOS 5.0出来的特性 ARC是编译器特性
instancetype与ID的区别 instancetype 能够检测 返回值的类型与接收指针的类型是否一致.
|