黑馬程序員——ARC機制總結和用ARC創建模型

ARC 全稱:Automatic Reference Countingios

使用ARC 只須要在創建一個新的項目的時候把 下面的√打上程序員

Xcode5之後都會默認建議開發者使用ARC機制app

新的項目中若是有部分文件不想使用ARC就 在Build Phases中找到那個文件 後面修改爲-fno-objc-arciphone

就得項目中若是有部分文件想使用ARC就 Build Phases中找到那個文件 後面修改爲-f-objc-arc學習

在使用了ARC開發程序中不能再出現release或者autorelease 不然就報錯ui

 源碼:http://www.jinhusns.com/Products/Download/?type=xcjatom

若是想把整個就項目直接轉化成ARC就 點Edit -》Refactor-》Counvert to OC ARCspa

 

1.ARC特色指針

1> 不容許調用release、retain、retainCountcode

2> 容許重寫dealloc,可是不容許調用[super dealloc]

3> ARC的判斷準則:只要沒有強指針指向對象,就會釋放對象

 

2 @property的參數

* strong :成員變量是強指針(適用於OC對象類型)

* weak :成員變量是弱指針(適用於OC對象類型)

* assign : 適用於非OC對象類型

* 之前的retain改成用strong

 

指針分2種:

1> 強指針:默認狀況下,全部的指針都是強指針 __strong

2> 弱指針:__weak

 

// *錯誤寫法(沒有意義的寫法)

__weak Person *p = [[Person alloc] init];

 

// *循環引用時的解決方法

一端改爲strong 一端改爲retain

 

在學習了ARC的知識以後 發現代碼又再次精簡了許多,徹底不用管內存管理裏的事了,就像MJ老師說的蘋果 想讓程序員的100%的經歷 都放在業務上而不是抽出50%放在內存管理上。 代碼有五個時段

時段一:剛開始是全部set和get都要本身寫,內存管理所有本身寫。

時段二:有了@property自動生成聲明 和 @synthesize自動生成實現

時段三:@property包含了 自動聲明實現的功能 只寫這一個就夠了

時段四:出了autorelease ,不用再關心release 和 程序中的代碼的前後關係了,有了自動緩衝池@autorelesepool,只要寫了autorelease 它會在程序代碼塊以後自動所有釋放。

時段五:有了ARC以後什麼都無論了。

 

而後老師講了一個創建一個模型創建的是 新浪微博轉發狀態的模型,我在看懂以後本身也嘗試着創建了一個模型

是品牌下有本身的產品 一個品牌的產品能夠加工另外一個公司的產品

我創建的是一個是富士康公司生產出手機值900元 而後蘋果加工後就成了iphone值5688元

下面是代碼

main.m

//

//  main.m

//  Model

//

//  Created by 董 尚先 on 14-10-9.

//  Copyright (c) 2014年 dsx. All rights reserved.

//

 

#import <Foundation/Foundation.h>

#import "Brand.h"

#import "Product.h"

int main()

{

// 創立一個蘋果公司

Brand *b1 = [[Brand alloc]init];

b1.name = @"apple";

 

// 創立一個富士康公司

Brand *b2 = [[Brand alloc]init];

b2.name = @"fushikang";

 

// 富士康生產一個手機啊

Product *p1 = [[Product alloc]init];

p1.name = @"phone";

p1.price = 900.00;

p1.brand = b2;

 

// 蘋果以那個爲原材料加工一下

Product *p2 = [[Product alloc]init];

p2.name = @"iphone";

p2.RawProduct = p1;

p2.price = 5688.88;

p2.brand = b1;

return 0;

}

 

Brand.h  // 品牌類

//

//  Brand.h

//  Model

//

//  Created by 董 尚先 on 14-10-9.

//  Copyright (c) 2014年 dsx. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

typedef struct {

    int year;

    int month;

    int day;

} Date;

@interface Brand : NSObject

 

// 創建品牌的名稱

@property (nonatomic, strong) NSString *Name;

 

// 創建這個品牌的創立時間

@property (nonatomic, assign) Date SinceTime;

 

// 創建一個品牌Logo 存放資源的URL

@property (nonatomic, strong) NSString *Logo;

 

// 創建一個總部電話 用字符串存儲

@property (nonatomic, strong) NSString *Centerphone;

 

// 此品牌旗下的產品數量

@property (nonatomic, assign) int OwnProductNumber;

@end

 

 

Product.h  //產品類

//

//  Product.h

//  Model

//

//  Created by 董 尚先 on 14-10-9.

//  Copyright (c) 2014年 dsx. All rights reserved.

//

 

#import <Foundation/Foundation.h>

@class Brand;

@interface Product : NSObject

 

// 產品的名稱

@property (nonatomic, strong) NSString *Name;

 

// 產品的效果圖

@property (nonatomic, strong) NSString *Photo;

 

// 產品所屬公司

@property (nonatomic, strong) Brand *brand;

 

// 產品的原材料

@property (nonatomic, strong) Product *RawProduct;

 

// 產品的價格

@property (nonatomic, assign) double price;

 

@end

 

而後 Brand.m 和 Product.m 都是自動生成的裏面代碼沒啥意義就不發了。

ARC的功能很強大,咱們這批學ios的程序員是遇上好時候了啊,估計蘋果之後還會出各式各樣的方便自動生成的方法。一塊兒期待吧。

相關文章
相關標籤/搜索