1. @property (nonatomic, strong) NSArray *array0;
2.@property (nonatomic, copy) NSArray *array1;
3.@property (nonatomic, strong) NSMutableArray *array2;
4.@property (nonatomic, copy) NSMutableArray *array3;
a.strong copy 主要针对带有可变类型
NSMutableArray *arr = [[NSMutableArray alloc]init];
[arraddObject:@"1"];
1中 self.array0= arr; 当对arr 进行修改 self.array0 也发生变化 地址指向同一个存储区域
2中 copy 地址不同,两个存储区域
4中 self.array3= arr; 变为不可变,对self.array3 操作崩溃
id objc = @"nihao". //常量区不会被释放
__weak id obj1 = objc; // objc1 指向 objc。 当objc 引用计数0。查找 map表 释放obj1=nil. 但是 obj吃是常量不会释放,所以obj1 也不会释放
__strong id obj2 = [NSObject new]; //用完释放。
__weak id obj3 = [NSObject new]; 编译警告,执行完就释放,
{
id obj4 = [NSObject new]; //出括号释放
}
__autoreleasing id obj4 = [NSObject new];//加入释放池中 ,最近的释放池
__unsafe_unretained id obj5 = self. //. 随时释放
void(^block)(void) = ^{
NSLog(@"2222");
};
block调用
[UIView animateWithDuration:1 animations:block];
dispatch_async(dispatch_get_main_queue(), block);
[[NSBlockOperation blockOperationWithBlock:block ] start];
[[NSInvocation invocationWithMethodSignature:[NSMethodSignature signatureWithObjCTypes:"v@?"]] invokeWithTarget:block];
[blockinvoke];
类在编译时,内存布局已经完成
分类是运行时才加载