OC语言学习-其他
来源:互联网 发布:手机学全站仪的软件 编辑:程序博客网 时间:2024/05/19 12:25
数据类型Block
block本质:指向函数的指针
block跟函数差不多,区别在于block并不确定,可以在运行时随时随地编写
代码中定义一个block:
无形参无返回值:
void (^myblock) (); //定义了一个block类型的myblock
有形参有返回值:
int (^sumblock)(int,int); //定义了一个传入两个int形参和返回int类型的block类型的sumblock
block封装代码:
//封装无参数的代码^{ NSLog(@”--------------------”);};//封装有参数的代码^(int a,int b){ return a+b;};
完整写法:
//不带参数的blockvoid (^myBlock) ()=^{ NSLog(@”--------------------”);};//带参数的blockint(^sum)(int,int)= ^(int a,int b){ return a+b;};
block调用:
myblock(); //调用myblockint a=sumblock(5,4); //调用sumblock并把block的返回值赋值给a
Block知识点:
- 能访问程序中外面变量,但默认情况下不能修改外部局部变量,加上双下划线_ _block关键字即可修改外面局部变量,如:_ _block int a;
- 利用typedef自定义Block类型
//定义了一个sumBlock类型,这个类型传入两个形参并返回两者之和typedef int (^sumBlock) (int,int);//用sumBlock定义s并封装代码 sumBlcok s=^(int a,int b){ return a+b; }//调用sumBlockint a=s(5,10);
协议protocol
协议的定义
@protocol 协议名 <NSObject>
方法声明列表….
@end
如何遵守协议
- 类遵守协议
@interface 类名:父类名 <协议名1,协议名2>
@end
- 协议遵守协议
@protocol 协议名称 <其他协议名称1,其他协议名称2>
@end
协议中方法声明的关键字
- @required (不写即默认为required)
要求实现声明的方法,如果不实现,会发出警告
- @optional
不要求实现
定义一个变量的时候,限制这个变量保存的对象遵守某个协议
类名<协议名称> *变量名;
id <协议名称> 变量名;
如:NSObject<MyProtocol> *obj;
如果不遵守协议,会严重警告
@property中声明的属性也可用做一个遵守协议的限制
@property (nonatomic,strong) 类名<协议名称> *属性名
@property (nonatomic,strong) id<协议名称> *属性名
协议可定义在单独.h文件中,也可定义在某个类中
使用情景:
如果这个协议只用在某个类中,应该把协议定义在该类中
如果这个协议用在多个类中,应该把协议定义在单独文件中
分类也可定义在单独.h和.m文件中,也可定义在该类中
使用情景:
一般情况下,都是定义在单独文件中
定义在原来类中的分类,知道语法可行即可
0 0
- OC语言学习-其他
- OC语言----foundation其他常用的类型
- oc语言学习
- OC语言学习1
- OC语言学习1
- oc语言的学习
- C语言学习-其他
- OC编程语言学习-1
- OC编程语言学习-2
- OC编程语言学习-3
- OC语言学习-基本语法
- OC语言学习-面向对象
- OC语言学习-内存管理
- OC编程语言学习-4
- OC语言中的类学习
- OC语言学习03-字符串
- OC语言学习04-数组
- OC 语言学习第一天—OC 语法概览
- android 得到应用列表
- HDU 1201
- UITableView(一)---- 基础
- 数组实现的队列
- 该培训纳入分析与业务分析建模
- OC语言学习-其他
- 视频广告应该是你的广告计划中巨大的一部分
- cocos2d-x之CCTextureCache 用法总结
- opencv之sift双目测距
- 使用 CSS 媒体查询创建响应式网站
- Linux中的GPIO的使用方法
- 十大渗透测试演练系统
- Android数据库hibernate框架
- 关于Qt控制中边框的显示的一些设置(完善中)