Objective-C 语法六(异常/选择器/代码块)
来源:互联网 发布:html如何连接数据库 编辑:程序博客网 时间:2024/05/25 01:34
Objective-C 语法六
首先申明下,本文为笔者学习《Objective-C 基础教程》的笔记,并加入笔者自己的理解和归纳总结。
1、异常
(1) 异常NSException类表示异常。
打开支持异常特性。
(2) 异常关键字
@try,定义代码块决定是否要抛出异常。
@catch,定义处理已抛出异常的代码块。接受一个异常,通常是NSException类型。
@finally,定义无论是否抛出异常都会执行的代码块。
@throw,抛出异常。
异常处理格式
@try {// 正常代码} @catch (NSException* except) {// 异常处理} @catch (id value) {// catch语句可以有多个} @finally {// 资源释放}(3) 抛出异常
抛出异常有两种方式。
- 使用"@throw异常名;"来抛出异常。
- NSException调用raise方法。
2、选择器
@selector定义选择器,responseToSelector方法判断对象是否包含该选择器,performSelector方法调用选择器。@interface Shape : NSObject- (void) draw;@end@implementation Shape- (void) draw {NSLog(@"Shape draw");}@endint main(int argc, const char* argv[]) {@autoreleasepool {Shape* shape = [[Shape alloc] init];[shape draw];if ([shape respondsToSelector: @selector(draw)]) {[shape performSelector: @selector(draw)];} else {NSLog(@"Not has draw");}if ([shape respondsToSelector: @selector(drawShape)]) {[shape performSelector: @selector(drawShape)];} else {NSLog(@"Not has drawShape");}}return 0;}
3、代码块
代码块以^(幂符号)定义。int (^add_block)(int num1, int num2) = ^(int num1, int num2) {return num1 + num2; }如果代码块没有参数,可以省略。
void (^void_block)() = ^{ NSLog(@"Hello World!"); }代码块可以使用typedef关键字
typedef int (^add_block)(int num1, int num2);代码块可以使用本地变量,代码块会复制定义时的变量。如果要修改本地变量,可以使用_block变量。
int main(int argc, const char* argv[]) {@autoreleasepool {int a = 11;int b = 13;__block int c;void (^void_block)() = ^{ NSLog(@"Hello World!"); };void_block();typedef int (^add_block)(int num1, int num2);add_block block = ^(int num1, int num2) {return num1 + num2; };NSLog(@"%d + %d = %d", a, b, block(a, b));int (^multiply)() = ^{ return a * b; };NSLog(@"%d * %d = %d", a, b, multiply(a, b));a = 15;b = 17;NSLog(@"%d * %d = %d", a, b, multiply(a, b));void (^minus)(int num1, int num2) = ^(int num1, int num2){ c = num1 - num2; };minus(a, b);NSLog(@"c = %d", c);}return 0;}
阅读全文
0 0
- Objective-C 语法六(异常/选择器/代码块)
- Objective-C语法之代码块(block)的使用
- Objective-c 块语法
- Objective-C 代码块
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块的使用
- Objective-C语法之代码块的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- 献给那些浮躁的年轻人
- ssm框架之登录验证
- Android 支持多种屏幕第一篇
- GO安装问题
- opencv--NO.5 线性滤波
- Objective-C 语法六(异常/选择器/代码块)
- 【论指针(2)】指针与函数
- 剑指offer面试题12 打印1到最大的n位数
- 洛谷P1137 旅行计划(拓扑排序+dp)
- 精通比特币 第3章 比特币客户端
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- Dex文件结构
- 网口扫盲二:Mac与Phy组成原理的简单分析
- MySQL server has gone away