//1.栈是由系统来分配内存存放基本数据类型和方法参数
//2.堆是由你来分配和管理内存存放类类型能使用copy等修饰符的
//3.全局区全局变量,静态变量当程序结束时会释放内存
//4.常量区NSString *str =@"123";
//5.方法区
//创建局部block时系统默认把其创建在栈出了当前block方法体就会被自动释放当block类型是NSGlobalBlock使用copy retain release都是无效的如果没有使用外部变量默认是NSGlobalBlock
//当block引用外部变量时会转化类型成NSStackBlock对copy操作有效果:会把block类型改变成NSMallocBlock copy后的block放在堆上面对copy和retain release操作有效
//注意NSMallocBlock类型的Block虽然使用copy retain release有效但是系统显示的引用计数一直1尽量不要对block使用retain
//Block_copy(.......)和copy效果一样
//Block_release(.......)和release效果一样
inta =1;
totalBlockmyblock=^(void)
{
NSLog(@"%d",a);
};
myblock();
NSLog(@"111-----%@",myblock);
totalBlockmyblock1 =[myblockcopy];
NSLog(@"222-----%@",myblock1);
NSLog(@"444-----%@",myblock);
[myblock1 retain];
NSLog(@"555-----%d",[myblock1 retainCount]);