Objective-C 语法六(异常/选择器/代码块)
2017-07-04 08:28
429 查看
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方法。
raise只对NSException有效,throw可以用在其他对象上。
2、选择器
@selector定义选择器,responseToSelector方法判断对象是否包含该选择器,performSelector方法调用选择器。
@interface Shape : NSObject - (void) draw; @end @implementation Shape - (void) draw { NSLog(@"Shape draw"); } @end int 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; }
相关文章推荐
- Objective-C语法之异常处理
- Objective-C语法之异常处理
- Objective-C语法之异常处理
- objective-c语法学习:异常处理
- Objective-C语法之异常处理
- 6、Objective-C语法之异常处理
- Objective-C语法之异常处理
- Objective-C语法之异常处理
- 5,Objective-C语法之异常处理
- Objective-C语法之异常处理
- Objective-C 2.0 with Cocoa Foundation--- Class类型,选择器Selector以及函数指针(2)
- Objective-C语法之异常处理
- Objective-C语法概述
- Objective-C语法快速参考
- 黑马程序员—Objective-C学习—基本语法、类和对象
- 十分钟让你明白Objective-C的语法(和Java、C++的对比
- jQuery系列之基本语法以及选择器(一)
- Objective-C语法简介
- 非常好的objective-c语法讲解
- Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id)等