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 主要針對(duì)帶有可變類型
NSMutableArray *arr = [[NSMutableArray alloc]init];
? [arraddObject:@"1"];
1中 ??? ? self.array0= arr; ? 當(dāng)對(duì)arr 進(jìn)行修改 ?self.array0 也發(fā)生變化 ?地址指向同一個(gè)存儲(chǔ)區(qū)域
2中 ? ??copy ?地址不同,兩個(gè)存儲(chǔ)區(qū)域
4中 ??self.array3= arr; ?變?yōu)椴豢勺儯瑢?duì)self.array3 操作崩潰
id objc = @"nihao". ? //常量區(qū)不會(huì)被釋放
__weak ?id obj1 = objc; ? // objc1 指向 objc谊囚。 當(dāng)objc 引用計(jì)數(shù)0婉陷。查找 map表 釋放obj1=nil. 但是 obj吃是常量不會(huì)釋放铣鹏,所以obj1 也不會(huì)釋放
__strong id obj2 =?[NSObject new]; ?//用完釋放霹陡。
__weak id obj3 =?[NSObject new]; ? 編譯警告皆尔,執(zhí)行完就釋放姚建,
{
? ? ? ? id obj4 =?[NSObject new]; ? ? //出括號(hào)釋放
}
__autoreleasing??id obj4 =?[NSObject new];//加入釋放池中 矫俺,最近的釋放池
__unsafe_unretained?id obj5 = self. //. 隨時(shí)釋放
? ? void(^block)(void) = ^{
? ? ? ? NSLog(@"2222");
? ? };
block調(diào)用
? ? [UIView animateWithDuration:1 animations:block];
? ? dispatch_async(dispatch_get_main_queue(), block);
? ? [[NSBlockOperation blockOperationWithBlock:block ] start];
? ? [[NSInvocation invocationWithMethodSignature:[NSMethodSignature signatureWithObjCTypes:"v@?"]] invokeWithTarget:block];
? ? [blockinvoke];
類在編譯時(shí),內(nèi)存布局已經(jīng)完成
分類是運(yùn)行時(shí)才加載