- 不要等到明天,明天太遙遠(yuǎn)渣玲,今天就行動逗概。
須讀:看完該文章你能做什么?
ARC的特性忘衍,判斷原則,
什么是強(qiáng)指針,
什么是弱指針.
學(xué)習(xí)前:你必須會什么?(在這里我已經(jīng)默認(rèn)你具備C語言的基礎(chǔ)了)
適合所有人逾苫,不需要懂的什么
注:(小白直接上手)
一、本章筆記
一枚钓、
ARC是一個編譯器特性(Xcode的功能),而不是運(yùn)行時特性
二铅搓、
ARC的判斷原則
只要還有一個強(qiáng)指針變量 指向?qū)ο?對象就會保持在內(nèi)存中
默認(rèn)情況下 所有指針變量都是強(qiáng)指針
被__strong修飾的指針
弱指針
被__weak修飾的指針
在開發(fā)中,千萬不要使用一個弱指針 保存一個剛剛創(chuàng)建的對象 會被立即釋放
二、code
main.m
#pragma mark 04-ARC基本概念
#pragma mark - 代碼
#import <Foundation/Foundation.h>
#pragma mark 類
#import "Person.h"
#pragma mark - main函數(shù)
int main(int argc, const char * argv[])
{
// Person *p = [[[Person alloc]init]autorelease];
// 默認(rèn)情況下 所有的指針 都是強(qiáng)指針
// Person *p = [[Person alloc]init];
{
// ARC的判斷準(zhǔn)則 : 只要沒有強(qiáng)指針指向?qū)ο? 對象就會釋放
// 默認(rèn)情況下 所有的指針 都是強(qiáng)指針
// Person *p = [[Person alloc]init];
// p = nil;
// __strong Person *p = [[Person alloc]init];
// // 弱指針
// __weak Person *p2 = p;
// p = nil;
// 在開發(fā)中,千萬不要使用一個弱指針 保存一個剛剛創(chuàng)建的對象
// 立即釋放
__weak Person *p = [[Person alloc]init];
}
return 0;
}
Person
>>>.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@end
>>>.m
#import "Person.h"
@implementation Person
- (void)dealloc
{
NSLog(@"%s",__func__);
// [super dealloc]; // ARC是不可以調(diào)用 [super dealloc]; 這是監(jiān)測一個項(xiàng)目是不是ARC的辦法之一
}
@end