//
回调函数,函数指针
NSArray *array = @[@1 , @2 , @3 , @4] ; //[NSNumber numberWithInteger:1];
[array enumerateObjectsUsingBlock :^( id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog ( @"obj:%@,id:%lu,stop:%d" ,obj,idx,*stop);
//stop 提供了一种对遍历的控制,想要停止遍历的时候,对 stop 调成 yes 就 ok
*stop = YES ;
}];
//block 声明
void (^show) ( id ) = ^( id obj){
NSLog ( @"obj:%@" ,obj);
};
//block 使用
show(array);
typedef int (^Operation) ( int , int );
Operation add = ^( int a, int b){
return a + b;
};
Operation sub = ^( int a , int b){
return a - b;
};
int sum = add( 10 , 20 );
NSLog ( @"sum = %d" ,sum);
//block 的局部变量的关系
//block 能访问局部变量
//block 不能修改普通的局部变量
//block 能修改 __block 修饰的局部变量
__block int i = 20 ;
void (^print)() = ^{
NSLog ( @"i = %d" ,i);
};
print();
}
return 0 ;
NSArray *array = @[@1 , @2 , @3 , @4] ; //[NSNumber numberWithInteger:1];
[array enumerateObjectsUsingBlock :^( id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog ( @"obj:%@,id:%lu,stop:%d" ,obj,idx,*stop);
//stop 提供了一种对遍历的控制,想要停止遍历的时候,对 stop 调成 yes 就 ok
*stop = YES ;
}];
//block 声明
void (^show) ( id ) = ^( id obj){
NSLog ( @"obj:%@" ,obj);
};
//block 使用
show(array);
typedef int (^Operation) ( int , int );
Operation add = ^( int a, int b){
return a + b;
};
Operation sub = ^( int a , int b){
return a - b;
};
int sum = add( 10 , 20 );
NSLog ( @"sum = %d" ,sum);
//block 的局部变量的关系
//block 能访问局部变量
//block 不能修改普通的局部变量
//block 能修改 __block 修饰的局部变量
__block int i = 20 ;
void (^print)() = ^{
NSLog ( @"i = %d" ,i);
};
print();
}
return 0 ;
}