内存五大区域
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] 0x100001f75
Block的四种形式
void (^block)()=^(){
NSLog (@"今天有点多云" );
};
block();
结果
2015-07-28 19:25 :43 .452 OC10_Block [1239:82416] 今天有点多云
void (^block)(int ,int )=^(int a,int b){
int max=a > b ? a : b;
NSLog (@"%d" ,max);
};
block(10 ,20 );
结果
2015-07-28 19:27 :08 .121 OC10_Block [1249:82981] 20
int (^block)()=^(){
return 100 ;
};
NSLog (@"%d" ,block());
结果
2015-07-28 19:28 :07 .938 OC10_Block [1256:83327] 100
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 *(^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" ));
结果
2015-07-28 19:31 :33 .543 OC10_Block [1278:86117] 2015-07-28 02:12 :12 +0000
Block 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
NSArray *arr=[NSArray arrayWithObjects:@"1" ,@"2" ,@"3" ,@"4" ,@"5" ,@"6" , nil ];
[arr enumerateObjectsUsingBlock:^(NSString * obj, NSUInteger idx, BOOL *stop) {
NSLog (@"%@" ,obj);
}];
结果
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" ];
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
补充
主函数之前
void test1()
{
NSLog (@"今天真热" );
}
int addNum(int a,int b){
return a+b;
}
typedef int DT;
typedef int (*PFUN)(int ,int ) ;
typedef NSString *(^Block)(NSArray *) ;
typedef NSInteger (^TestBlock)();
#import <Foundation/Foundation.h>
@interface BaseModel : NSObject
@property (nonatomic ,copy)NSString *name;
@property (nonatomic ,copy)NSString *sex;
-(id )initWithName:(NSString *)name
sex:(NSString *)sex;
+(id )baseWithName:(NSString *)name
sex:(NSString *)sex;
@end
#import "BaseModel.h"
@implementation BaseModel
-(id )initWithName:(NSString *)name
sex:(NSString *)sex{
self =[super init];
if (self ) {
self .name =name;
self .sex =sex;
}return self ;
}
+(id )baseWithName:(NSString *)name
sex:(NSString *)sex{
id obj =[[[self class] alloc] initWithName:name sex:sex];
return obj;
}
@end