黑马程序员——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的程序员是遇上好时候了啊,估计苹果之后还会出各式各样的方便自动生成的方法。一块儿期待吧。

相关文章
相关标签/搜索