OC加强day3-函数指针、protocol、block、NSString

来源:互联网 发布:360网络急救箱修复lsp 编辑:程序博客网 时间:2024/05/06 08:37

函数指针

一个指向函数的指针


block

blocktypedef 格式:typedef 返回值类型(^block名)(参数类型列表);

使用时:block变量名; 此时block名是类型名,如同Int这种

如有参有返回值: typedef int^blockType{intint }

1.block内部可以访问全局变量,也可以访问全局变量和外部定义的局部变量

2.block内部可以修改自身内部定义的变量,可以修改全局变量,不可以修改外部定义的局部变量

3.如果硬要修改外部定义的局部变量,那么这个局部变量应该是被__block所修饰的

__block是个关键字,被这个关键字修饰的变量可以被Block所修改

block作为函数的返回值

1.起别名

2.返回值类型改成这个别名

3.接收返回的block

4.使用返回的block

block书写:x-code中输入inlineblock回车,很方便,防止写错格式

block作为函数参数时,尽量写形参列表,不要写实参列表。


protocol

声明一些必须实现和选择实现的方法

协议:只生成一个.h文件,

1.声明格式:@protocol协议名<NSObject> @end

2.采纳格式:类采纳协议 @interface类名:NSObject<采纳的协议名> @end

3.在类的.m文件中实现协议中声明的方法

所有的协议都采纳NSObject

一个协议可以遵守另一个协议

类和协议可以采纳多个协议,格式<协议1,协议2,协议3>

父类协议中声明的方法也要被采纳

必须实现:@required 

选择实现:@optional

类型限制格式:id<协议名称>变量名

protocol代理设计模式

1.定义一个协议

2.创建代理类,遵守协议

3.本身有一个属性,id<协议名>

4.调用代理类的方法

5.实现


NSString

普通创建时一般存于数据段区,内容相同时,地址相同。

通过XXXWithFormat的形式,不存在与数据段,内容相同,地址相同

对象方法 writeFormat(写入文件),第一个参数:你要写到哪 (文件路径)第二个参数:原子性,是否加锁第三个参数:编码格式,通用UTF-8第四个参数:目前无特殊情况就用nil返回值为BOOL,判断是否写成功了

类方法 读取文件(stringWithContentsOfFile),第一个参数:文件路径第二个参数:编码格式第三个参数:nil


0 0
原创粉丝点击