码迷,mamicode.com
首页 > 其他好文 > 详细

Arc 自动内存管理 分类Category 类扩展 Block 代码段 和 Protocol协议的一些简单知识的总结

时间:2014-11-12 22:46:53      阅读:332      评论:0      收藏:0      [点我收藏+]

标签:style   io   ar   os   使用   sp   strong   文件   数据   

1、
Arc的使用
Arc是自动内存管理;
arc的使用原则
1)、只要对象没有任何强类型指针引用就会被释放’。
2)、只要对象被任何强类型指针指引就不会被释放。
 
弱指针:__weak 
被__weak修饰的指针就被称为弱型指针;
 
强类型指针
默认的指针都是强类型指针;
被__strong修饰的指针也是强类型指针。
 
使用Arc时可以重写dealloc方法,但是在重写方法时不能手动调用[super dealloc];
在Arc中通过@property生成的属性如果是OC的对象那么要用Strong来修饰。
如果生成的属性是基本类型,还是使用assign来修饰。
 
在Arc中解决retain循环,
解决方法:在进行@property时一边使用strong另一边使用 weak。
 
2、Category   分类
 
Category是OC的特有语法。
 
作用:
1)可以在不修改原来类的基础上为这个类扩充一些方法。
2)可以把一个类的内容分在多个不同的文件中存储。
3)便于团队协作开发。
 
格式
@interface 类名  (分类名)
 
@end
 
@implementation  类名  (分类名)
 
@end
 
注意:1、分类只能增加方法,不能为主类增加成员变量。
 2、分类可以访问原来类中的成员变量。
优先级:如果分类和父类出现同名的方法,优先调用分类中的方法,
如果分类中出现同名的方法,(最后参与编译的优先);
->原来的类,
->父类;
 
Category的优点:
1)、实现了类的相关方法的模块化;
可以把不同的方法分配到了不同的分类文件中。
可以用一个分类代表一类功能(模块化)。
2)、支持团队协作
可以让团队中的内部成员,共同扩充某个类的功能。
3)、可以为系统自带的类扩充功能。
  1*)为每个对象扩展一个show的方法。
 
类扩展;;
1)、可以为某个类扩充一些私有的成员变量和方法;。
2)、写在  .m文件中。
3)、英文名 class Extension。
 
书写格式:
@interface  类名()
@end
 
注:如果方法在 .m文件中有具体的实现,但是在 .h文件中没有声明,那么对于外部来说这个文件变成了私有的,外部无法访问的。
 
3、Block 代码段;(数据类型)
 
作用:1,用来保存一段代码,在某一个恰当的时间调用。
2、功能上类似函数和方法。
 
格式:
 
返回值类型 (^bolck变量名)(型参列表)=^(型参列表);
 
当调用block保存的代码时 可以      block变量名(实参);
 
当使用typedef定义block时
 
typedef 返回值类型(^block类型名称)(型参列表);
 
block默认下不能修改外面的局部变量,如果必须要修改可以用__block来修饰该变量。
 
注意:在调用block时必须先判断nil,否则会报错。
 
 
4、Protocol 协议
 
作用:1、用来声明一些方法。
 2、一个Protocol是由一系列的方法声明组成的。
 
注:任何类只要遵守了Protocol,就相当拥有了Protocol的所有方法。
 
Protocol的定义格式
 
@protocol 协议名称;
@end
类遵守协议
@interface 类名:父类名<协议名称1,协议名称2>
 

 

•协议中有2个关键字可以控制方法是否要实现(默认是@required,在大多数情况下,用途在于程序员之间的交流)
Ø@required:这个方法必须要实现(若不实现,编译器会发出警告)
Ø@optional:这个方法不一定要实现

 

 
注意:代理设计的目的;
- 解耦(主类不再依赖特定的某个类型,而是依赖代理,而很多类型都可以作为代理)。
- 增加了程序的灵活性、可扩展性。
 
Protocol(协议)是实现代理的一种手段。
 
补充:
-1、有时候很难抽象共同的父类。
-2、类只能但继承。

 

Arc 自动内存管理 分类Category 类扩展 Block 代码段 和 Protocol协议的一些简单知识的总结

标签:style   io   ar   os   使用   sp   strong   文件   数据   

原文地址:http://www.cnblogs.com/x1024598115/p/4093679.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!