iOS OC10_Block
生活随笔
收集整理的這篇文章主要介紹了
iOS OC10_Block
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
內存五大區域
//棧int a=10;NSLog(@"%p",a);//堆int *p=malloc(40);NSLog(@"%p",p);//全局static int b=10;NSLog(@"%p",b);//常量char *str="iphone";NSLog(@"%p",str);//代碼區NSLog(@"%p",maxValue);結果
2015-07-28 19:07:07.976 OC10_Block[829:71750] 0xa 2015-07-28 19:07:07.977 OC10_Block[829:71750] 0x1001068d0 2015-07-28 19:07:07.977 OC10_Block[829:71750] 0xa 2015-07-28 19:07:07.977 OC10_Block[829:71750] 0x100001f75Block的四種形式
//1.無參數,無返回值void(^block)()=^(){//函數大括號里的代碼段NSLog(@"今天有點多云");};//block的使用block();//block自己不會執行,必須調用才會執行block大括號里的代碼段結果
2015-07-28 19:25:43.452 OC10_Block[1239:82416] 今天有點多云 //2.有參數無返回值 void (^block)(int ,int)=^(int a,int b){ int max=a > b ? a : b; NSLog(@"%d",max);};//調用 block(10,20); //void (^block)(int ,int)是block的類型,它的名是block,我們也通過名進行調用結果
2015-07-28 19:27:08.121 OC10_Block[1249:82981] 20 //3.有返回值無參數 //有返回值在函數段的最后要加上return int(^block)()=^(){return 100; }; //block調用時沒有參數也要加上括號 NSLog(@"%d",block());結果
2015-07-28 19:28:07.938 OC10_Block[1256:83327] 100 //4.有參數有返回值NSString *(^block)(NSArray *,NSInteger)=^(NSArray *arr,NSInteger index){return arr[index];};NSLog(@"%@",block(@[@"1",@"2"],1));結果
2015-07-28 19:29:05.096 OC10_Block[1263:84049] 2練習
//返回整數,參數字符串NSInteger (^block)(NSString *)=^(NSString *str){return str.integerValue;};NSLog(@"%ld",block(@"111"));結果
2015-07-28 19:30:42.921 OC10_Block[1271:85319] 111 //參數日期字符串,返回NSDate類型的日期對象NSDate *(^block)(NSString *)=^(NSString *str){NSDateFormatter *formatter=[[NSDateFormatter alloc] init];[formatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];return [formatter dateFromString:str];};NSLog(@"%@",block(@"2015-07-28 10:12:12"));//block的函數段中更多使用參數,而返回值更多是調用一方使用結果
2015-07-28 19:31:33.543 OC10_Block[1278:86117] 2015-07-28 02:12:12 +0000 //通過新的block寫一個blockBlock block=^(NSArray *arr){return arr[0];}; //block和局部變量//__block相當于給a一個在block中修改的權限,否則他只能取值,不能賦值__block int a=10;void(^block)()=^(){a=10*a;NSLog(@"%d",a);};block();結果
2015-07-28 19:33:14.295 OC10_Block[1301:87551] 100 //通過block對數組進行遍歷NSArray *arr=[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];//系統的block[arr enumerateObjectsUsingBlock:^(NSString * obj, NSUInteger idx, BOOL *stop) {NSLog(@"%@",obj);}];//系統的block的用法就是回車結果
2015-07-28 19:33:52.913 OC10_Block[1308:88218] 1 2015-07-28 19:33:52.914 OC10_Block[1308:88218] 2 2015-07-28 19:33:52.914 OC10_Block[1308:88218] 3 2015-07-28 19:33:52.914 OC10_Block[1308:88218] 4 2015-07-28 19:33:52.915 OC10_Block[1308:88218] 5 2015-07-28 19:33:52.915 OC10_Block[1308:88218] 6 //數組排序//數組對字符串的排序//不可變的數組 NSArray*arr=@[@"zhangyangyang",@"wuhe",@"liushansahn",@"wangjunmin",@"yanglin"];//SEL是方法選擇器,他是方法選擇器的類型 NSArray*newArr[arrsortedArrayUsingSelector:@selector(compare:)]; NSLog(@"%@",newArr); NSLog(@"%@",arr);結果
2015-07-28 19:35:02.000 OC10_Block[1319:89130] (zhangyangyang,wuhe,liushansahn,wangjunmin,yanglin ) //可變數組 NSMutableArray*arr[NSMutableArrayarrayWithObjects:@"zhangyangyang",@"wuhe",@"liushansahn",@"wangjunmin",@"yanglin", nil]; [arr sortUsingSelector:@selector(compare:)]; NSLog(@"%@",arr);結果
2015-07-28 19:36:27.541 OC10_Block[1326:90109] (liushansahn,wangjunmin,wuhe,yanglin,zhangyangyang ) //數組對對象的排序//新建四個人Person *per1=[Person baseWithName:@"yanglin" sex:@"nan"];Person *per2=[Person baseWithName:@"wuhe" sex:@"nan"];Person *per3=[Person baseWithName:@"cunmou" sex:@"nv"];Person *per4=[Person baseWithName:@"liushanshan" sex:@"nan"];//用字面量創建對象和便利構造器是一樣的NSArray *arr=@[per1,per2,per3,per4];//以學生的姓名作為排序的依據 NSArray*newArr[arrsortedArrayUsingComparator:^NSComparisonResult(Person * obj1, Person* obj2) {return -[obj1.name compare:obj2.name];}];for (Person *per in newArr) {NSLog(@"%@",per.name);}結果
2015-07-28 19:37:53.065 OC10_Block[1340:91155] yanglin 2015-07-28 19:37:53.066 OC10_Block[1340:91155] wuhe 2015-07-28 19:37:53.066 OC10_Block[1340:91155] liushanshan 2015-07-28 19:37:53.066 OC10_Block[1340:91155] cunmou Person *per1=[Person baseWithName:@"yanglin" sex:@"nan"];Person *per2=[Person baseWithName:@"wuhe" sex:@"nan"];Person *per3=[Person baseWithName:@"cunmou" sex:@"nv"];Person *per4=[Person baseWithName:@"liushanshan" sex:@"nan"];NSMutableArray *marr=[NSMutableArray arrayWithObjects:per1,per2,per3,per4, nil];[marr sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {Person *per11=(Person *)obj1;Person *per22=(Person *)obj2;return [per11.name compare:per22.name];}];for (Person *per in marr) {NSLog(@"%@",per.name);}結果
2015-07-28 19:38:59.851 OC10_Block[1347:91927] cunmou 2015-07-28 19:38:59.852 OC10_Block[1347:91927] liushanshan 2015-07-28 19:38:59.852 OC10_Block[1347:91927] wuhe 2015-07-28 19:38:59.852 OC10_Block[1347:91927] yanglin補充
主函數之前
// //C語言的函數 // NSInteger maxValue(NSInteger a,NSInteger b){ // return a > b ? a : b; // }void test1() {NSLog(@"今天真熱"); }int addNum(int a,int b){return a+b; }typedef int DT; //新的類型寫在*的后面,就是這里的PFUN typedef int (*PFUN)(int ,int ) ; typedef NSString *(^Block)(NSArray *) ; //有返回值,無參數 typedef NSInteger(^TestBlock)(); // // BaseModel.h // OC10_Block // // Created by dllo on 15/7/28. // Copyright (c) 2015年 zhozhicheng. All rights reserved. //#import <Foundation/Foundation.h>@interface BaseModel : NSObject@property(nonatomic,copy)NSString *name; @property(nonatomic,copy)NSString *sex;-(id)initWithName:(NSString *)namesex:(NSString *)sex;+(id)baseWithName:(NSString *)namesex:(NSString *)sex;@end // // BaseModel.m // OC10_Block // // Created by dllo on 15/7/28. // Copyright (c) 2015年 zhozhicheng. All rights reserved. //#import "BaseModel.h"@implementation BaseModel-(id)initWithName:(NSString *)namesex:(NSString *)sex{self=[super init];if (self) {self.name=name;self.sex=sex;}return self;}+(id)baseWithName:(NSString *)namesex:(NSString *)sex{//多態方式完成id obj =[[[self class] alloc] initWithName:name sex:sex];return obj; }@end總結
以上是生活随笔為你收集整理的iOS OC10_Block的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Excel快捷键(字母+数字)大全
- 下一篇: 微信昵称表情符号前端显示问题