博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Object-C代码练习【代码块】
阅读量:7103 次
发布时间:2019-06-28

本文共 1978 字,大约阅读时间需要 6 分钟。

hot3.png

////  main.m//  代码块////  Created by on 14-10-10.//  Copyright (c) 2014年 apple. All rights reserved.//#import 
int main(int argc, const char * argv[]) { @autoreleasepool { int value = 6;// 定义一个代码块, 注意大括号后面的分号 int (^myBlockFirst)(int number) = ^(int number) { return value * number; };// 使用代码块 NSLog(@"%d", myBlockFirst(7)); // 使用代码块时通常不需要创建一个代码块变量,而是在代码中内联代码块中的内容。// 通常,你会需要一个将代码块作为参数的方法或函数 NSArray *array = [NSArray arrayWithObjects:@"Amir", @"Mishal", @"Irrum", @"Adam", nil]; NSLog(@"Unsorted Array %@", array);// 注意,这里的大括号后面没有分号 NSArray *sortedArray = [array sortedArrayUsingComparator:^(NSString *object1, NSString *object2) { return [object1 compare:object2]; }]; NSLog(@"Sorted Array %@", sortedArray); // 使用typedef定义代码块 typedef double (^sumNumber)(double num1, double num2); sumNumber sumMethod = ^(double num1, double num2) { return num1 + num2; }; NSLog(@"result is %.2f", sumMethod(3, 8)); typedef int (^sumNumber1)(void);// 如果这里不是静态变量,那么下面第二个输出语句依然输出200// 即,a = 20和b = 50没有改变计算出的值// 因为变量是本地的,即局部变量,代码块在定义时复制并保存他们的状态。所以,两次都输出200// 如果将a和b改为static,即全局变量,那么// 第二个就输出1000 int a = 10, b = 20; sumNumber1 sumMethod1 = ^(void){ return a * b; }; NSLog(@"%d", sumMethod1()); a = 20; b = 50; NSLog(@"%d", sumMethod1()); // __block变量// 本地变量会被代码块作为常量获取到。如果想要修改它们的值,必须将他们声明为__block变量// 注意block前面是两个下划线,不是一个 typedef int (^sumNumber3) (int num1, int num2); __block int c = 8; sumNumber3 sumMethod3 = ^(int num1, int num2){ c = num1 + num2; return c; }; NSLog(@"%d", sumMethod3(2, 9)); } return 0;}

转载于:https://my.oschina.net/are1OfBlog/blog/332797

你可能感兴趣的文章
万网云解析设置二级域名解析到同IP不同端口
查看>>
CSS浏览器兼容问题
查看>>
Gitlab_ansible_jenkins三剑客⑥Jenkins和ansible集成
查看>>
我的Python成长之路---第三天---Python基础(10)---2016年1月16日(雾霾)
查看>>
通过哪些方式可以降低网站的跳出率
查看>>
node.js结合mongodb
查看>>
Leetcode题目:Remove Duplicates from Sorted List
查看>>
Python基础之Python解释器
查看>>
[Java小程序]聊天室——Socket和ServerSocket的使用
查看>>
metamask源码学习-inpage.js
查看>>
《冷眼看IT》读书笔记--IT将成为服务行业
查看>>
iOS开发-面试总结(十七)
查看>>
改变注释字体颜色
查看>>
indexOf()、lastIndexOf()
查看>>
HDU2044 一只小蜜蜂...
查看>>
POJ2780 Linearity
查看>>
解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX
查看>>
Vue打包npm run build 打包后空白怎么解决?
查看>>
RT1052 BootLoader总结
查看>>
oc中定时器的基本使用
查看>>