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

函数指针

一个指向函数的指针


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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值