//Block块
//Block块可以传到任何地方使用
//^托字符
//1.无返回值,无参数的Block
void(^myBlock)()= ^{
NSLog(@"******");
};
myBlock();
//2.有返回值有参数的Block
NSInteger(^sumBlock)(NSInteger,NSInteger)=^(NSInteger sum1,NSInteger sum2){
return sum1+sum2;
};
sumBlock(10,20);
NSLog(@"%ld",sumBlock(10,20));
//3.有返回值,无参数的
NSString *(^helloBlock)()=^{
return @"hello";
};
NSLog(@"%@",helloBlock());
//4.无返回值,有参数的
//看见^字符 就说明他是一个Block块
void(^sayHiBlock)(NSString *)=^(NSString *s){
NSLog(@"%@",s);
};
sayHiBlock(@"Hello,World");
//如果我们需要在Block中改变变量的值,
//加__block
__block NSInteger test1=10;
blockName testBlock=^{
//和Block块同作用域的变量我们 可以只读使用,
//但是不能改变它的值
test1=20;
NSLog(@"%ld",test1);
};
testBlock();
//在使用__block后,如果在Block块中改变了变量的值
//外面也改变
NSLog(@"%ld",test1);
Person *p1=[[Person alloc] initWithName:@"lili" age:18];
Person *p2=[[Person alloc] initWithName:@"oioi" age:19];
Person *p3=[[Person alloc] initWithName:@"wewe" age:25];
NSMutableArray *array=[NSMutableArray array];
[array addObject:p1];
[array addObject:p2];
[array addObject:p3];
[array sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
if ([obj1 age]>[obj2 age]) {
return NSOrderedDescending;
}
else if ([obj1 age]==[obj2 age]){
return NSOrderedSame;
}
else{
return NSOrderedAscending;
}
}];
NSLog(@"%@",array);
//字面量
NSString *s=@"abc";
NSArray *arr=@[@"1",@"222",@"333"];
arr[1]; //下标
NSDictionary *dict=@{@"1": @"a",@2:@"b"};
dict[@"1"]; //key值
NSLog(@"%@",arr[1]);
NSNumber *num=@1;
NSMutableArray *mutable = [@[@1, @2, @3, @4, @5]mutableCopy];
NSMutableDictionary *dic2=[@{@"1": @"a",}mutableCopy];
211

被折叠的 条评论
为什么被折叠?



