- 不要等到明天,明天太遙遠(yuǎn),今天就行動(dòng)。
須讀:看完該文章你能做什么?
如何將一個(gè)MRC的項(xiàng)目 轉(zhuǎn)成 ARC
學(xué)習(xí)前:你必須會(huì)什么?(在這里我已經(jīng)默認(rèn)你具備C語言的基礎(chǔ)了)
什么是ARC,什么是MRC
一、本章筆記
MRC 轉(zhuǎn) ARC 項(xiàng)目
1.> Edit -> Convert -> To Objective-C ARC
二、code
main.m
#pragma mark 07-ARC?MRC
#pragma mark 概念
/*
MRC 轉(zhuǎn) ARC 項(xiàng)目
1.> Edit -> Convert -> To Objective-C ARC
*/
#pragma mark - 代碼
#import <Foundation/Foundation.h>
#pragma mark 類
#import "Person.h"
#import "Dog.h"
#import "Bone.h"
#pragma mark - main函數(shù)
int main(int argc, const char * argv[])
{
Person *p = [[Person alloc]init];
Dog *d = [[Dog alloc]init];
Bone *b = [[Bone alloc]init];
return 0;
}
Person
>>>.h
#import <Foundation/Foundation.h>
@class Dog;
@interface Person : NSObject
@property (nonatomic, strong) Dog *dog;
@end
>>>.m
#import "Person.h"
#import "Dog.h"
@implementation Person
- (void)dealloc
{
NSLog(@"%s",__func__);
}
@end
Dog
>>>.h
#import <Foundation/Foundation.h>
@class Bone;
@interface Dog : NSObject
@property(nonatomic, strong)Bone *bone;
@end
>>>.m
#import "Dog.h"
#import "Bone.h"
@implementation Dog
- (void)dealloc
{
NSLog(@"%s",__func__);
// Receiver type 'Bone' for instance message is a forward declaration
}
@end
Bone
>>>.h
#import <Foundation/Foundation.h>
@interface Bone : NSObject
@end
>>>.m
#import "Bone.h"
@implementation Bone
- (void)dealloc
{
NSLog(@"%s",__func__);
}
@end
1.MRC轉(zhuǎn)ARC流程圖
image.png
image.png
2.出現(xiàn)錯(cuò)誤的情況
image.png
2.1定位到錯(cuò)誤
image.png
缺少導(dǎo)入頭文件
image.png
3.沒有錯(cuò)誤
image.png
注意:對(duì)比每個(gè)MRC文件修改之后 變成ARC的面板(左邊是轉(zhuǎn)換之后,右邊是轉(zhuǎn)換之前)【如果項(xiàng)目比較龐大比較大的可能轉(zhuǎn)換失敗,建議先拷貝項(xiàng)目再進(jìn)行轉(zhuǎn)換】
image.png