------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
本篇博客为IOS入学基础学习的第十篇博客,记录的学习内容主要包括:block数据类型,@protocol协议以及Foundation框架中系统自带的一些类的使用,记录内容如下:
一、block数据类型
1> block用来保存一段代码,声明block的标志是^,block跟函数比较像,都可以保存代码,有返回值和形参,并且调用方式相同,有关block的使用参见以下小例子:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
//创建一个无形参的block:lineBlock
//当block没有形参的时候右边^后面的()可以省略
void (^lineBlock)() = ^{
NSLog(@"--------");
};
//创建一个有形参的block
int (^sumBlock)(int, int) = ^(int a, int b){
return a + b;
};
//调用block
lineBlock();
int c = sumBlock(10, 15);
NSLog(@"%d", c);
return 0;
}
2> block内部可以访问外面的变量,默认情况下block中无法修改外面的局部变量的值,但在外面局部变量加上__block后就可修改(类似static),参见以下例子:
int main(int argc, const char * argv[]) {
int a = 10;
__block int b = 20;
void (^testBlock)() = ^{
//block内部可以访问外面的变量