ARC 全称:Automatic Reference Counting

使用ARC 只需要在建立一个新的项目的时候把 下面的√打上

Xcode5以后都会默认建议开发者使用ARC机制

新的项目中如果有部分文件不想使用ARC就 在Build Phases中找到那个文件 后面修改成-fno-objc-arc

就得项目中如果有部分文件想使用ARC就 Build Phases中找到那个文件 后面修改成-f-objc-arc

在使用了ARC开发程序中不能再出现release或者autorelease 否则就报错

源码:http://www.jinhusns.com/Products/Download/?type=xcj

如果想把整个就项目直接转化成ARC就 点Edit -》Refactor-》Counvert to OC ARC

1.ARC特点

1> 不允许调用release、retain、retainCount

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

黑马程序员——ARC机制总结和用ARC建立模型的更多相关文章

  1. 黑马程序员—C语言的函数、数组、字符串

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...

  2. 黑马程序员:Java基础总结----类加载器

    黑马程序员:Java基础总结 类加载器   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 类加载器 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个 ...

  3. 黑马程序员:Java基础总结----反射

    黑马程序员:Java基础总结 反射   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 反射 反射的基石:Class类 Class类代表Java类,它的各个实例对象又分别 ...

  4. 黑马程序员:Java基础总结----GUI图形化界面

    黑马程序员:Java基础总结 GUI图形化界面   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流!   GUI(Graphical User Interface)图形化界 ...

  5. 黑马程序员:Java基础总结----网络编程

    黑马程序员:Java基础总结 网络编程   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络编程 网络通讯要素 . IP地址 . 网络中设备的标识 . 不易记忆,可用 ...

  6. 黑马程序员:轻松精通Java学习路线连载1-基础篇!

    编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...

  7. 黑马程序员:3分钟带你读懂C/C++学习路线

    随着互联网及互联网+深入蓬勃的发展,经过40余年的时间洗礼,C/C++俨然已成为一门贵族语言,出色的性能使之成为高级语言中的性能王者.而在今天,它又扮演着什么样重要的角色呢?请往下看: 后端服务器,移 ...

  8. 【黑马18期Java毕业生】黑马程序员Java全套资料+视频+工具

        Java学习路线图引言:        黑马程序员:深知广大爱好Java的人学习是多么困难,没视频没资源,上网花钱还老被骗. 为此我们历时一个月整理这套Java学习路线图,不管你是不懂电脑的小 ...

  9. 黑马程序员面试宝典(Java)Beta6.0免费下载

    场景 JavaSE基础 面向对象特征以及理解 访问权限修饰符区别 理解clone对象 JavaSE语法 java有没有goto语句 &和&&的区别 如何跳出当前的多重嵌套循环? ...

  10. 【黑马程序员C++ STL】学习记录

    黑马程序员 2017 C++ STL 教程(STL 部分已完结) 基于黑马STL课程整理:黑马程序员2017C++STL教程 视频链接 专栏:本STL专栏目录 文章目录 黑马程序员 2017 C++ ...

随机推荐

  1. PHP之时间和日期函数

    // 时间日期函数 Time <?php date_default_timezone_set('UTC'); // 获取当前时间的时间戳 $time0 = mktime(); $time1 = ...

  2. AJAX实现登录界面

    使用php跳转界面和AJAX都可实现登录界面的跳转的登录失败对的提醒.但是,php跳转的方式 需要额外加载其他界面,用户体验差.AJAX可实现当前页面只刷新需要的数据,不对当前网页进行 重新加载或者是 ...

  3. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

  4. VisualStudio 2015 开启IIS Express可以调试X64项目

    现在项目开发时总有时需要在X64下开发,这样我们就需要IIS Express中调试.不要总是放在IIS中,在Attach这样好慢.   如果不设置直接调试X64的程序,我们有可能会受到以下类似的错误 ...

  5. jetBrain系列软件

    请尽量支持正版软件!https://www.jetbrains.com/ 本文仅供参考 以下提供一种方法可以无限期体验JetBrain2016系列软件. 1.下载JetbrainsCrack-2.5. ...

  6. 【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(二) - 信令传输超时设计

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/9DJxipJaaBC8yC-buHgnTQ 作者简介: ...

  7. 2000条你应知的WPF小姿势 基础篇<28-33 WPF启动故事>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,0 ...

  8. ubuntu中查看已有的mysql用户并修改用户名和密码

    你先进入/etc/mysql 然后该目录下会有一个debian.cnf文件,用sudo cat debian.cnf查看里面的内容. 如果用户名为 debian-sys-maint 使用 mysql ...

  9. ArtifactTransferException: Failure to transfer org.apache.openejb:javaee-api:jar:5.0-1

    最近在myeclipse上创建maven类型的web项目的时候,出现了一个错误. ArtifactTransferException: Failure to transfer org.apache.o ...

  10. SharedPreferences 的另一种场景的用法

    SharedPreferences 的另一种场景的用法 昨天,下班在家想做什么来着,然后想用SharedPreferences存点数据,但是不知道咋地突然想到,SharedPreferences是应用 ...