代码改变世界

oc基础

2015-08-02 23:32  圆圆的月亮在地上  阅读(206)  评论(0编辑  收藏  举报

 

1.@autoreleasepool是ObjC的关键字,它的作用是对包含在这个关键字后面大包括内的程序会自动进行内存回收,不需要开发人员手动释放无用的对象;

2.%i或者%d:以十进制输出;%o:以8进制输出;%x:以16进制输出;

3.在ObjC中可访问性修饰符除了这三种,还有一个@package不太常用,它类似于C#中的internal在框架内是公共的,但是框架外是私有的(也就是只能在一个框架内可以访问)

4.ObjC中使用[]进行方法调用,在ObjC中方法调用的本质就是给这个对象或类发送一个消息;

5.ObjC中方法分为静态方法和动态方法两种,动态方法就是对象的方法,静态方法就是类方法

6.self不仅可以表示当前对象还可以表示类本身,也就是说它既可以用在静态方法中又可以用在动态方法中,self就代表当前方法的调用者

7.使用静态初始化方法。

8.id可以表示任何一个ObjC对象类型

9.一个协议可以扩展自另一个协议,例如上面AnimalDelegate就扩展自NSObject;可以实现数据和UI的分离。

事实上在ObjC中协议的更多作用是用于约束一个类必须实现某些方法,而从面向对象的角度而言这个类跟接口并不一定存在某种自然关系,可能是两个完全不同意义上的事物,这种模式我们称之为代理模式(Delegation)。在Cocoa框架中大量采用这种模式实现数据和UI的分离,而且基本上所有的协议都是以Delegate结尾。

现在假设需要设计一个按钮,我们知道按钮都是需要点击的,在其他语言中通常会引入事件机制,只要使用者订阅了点击事件,那么点击的时候就会触发执行这个事件(这是对象之间解耦的一种方式:代码注入)。但是在ObjC中没有事件的定义,而是使用代理来处理这个问题。首先在按钮中定义按钮的代理,同时使用协议约束这个代理(事件的触发者)必须实现协议中的某些方法,当按钮处理过程中查看代理是否实现了这个方法,如果实现了则调用这个方法。

10.block:作用:一:块中我们可以持有或引用局部变量,二:利用Block你可以将一个操作作为一个参数进行传递