Objective-C:ARC自动释放对象内存
ARC是cocoa系统帮你完成对象内存释放的引用计数机制
.h文件
// Person.h
// 01-ARC
//
// Created by ma c on 15/8/13.
// Copyright (c) 2015年. All rights reserved.
// #import <Foundation/Foundation.h> @interface Person : NSObject
@property(nonatomic,strong)NSString *name;
@property(nonatomic,assign)NSInteger age;
+(Person*)personWithName:(NSString*) name andAge:(NSInteger) age;
-(id)initWithName:(NSString*) name andAge:(NSInteger) age;
-(void)show;
@end
.m文件
// Person.m
// 01-ARC
//
// Created by ma c on 15/8/13.
// Copyright (c) 2015年. All rights reserved.
// #import "Person.h" @implementation Person
-(id)initWithName:(NSString*) name andAge:(NSInteger) age
{
self = [super init];
if(self)
{
_name = name;
_age = age;
}
return self;
} /*
在类方法中,由于没有创建对象实例,所以:self指针不能用,实例变量不能用。
*/
+(Person*)personWithName:(NSString*) name andAge:(NSInteger) age
{
return [[Person alloc]initWithName:name andAge:age];
} -(void)show
{
NSLog(@"name:%@,age:%ld",_name,_age);
} /*
创建对象时是先创建父类的部分,再创建子类的部分;
销毁对象时,顺序正好相反
ARC禁止显式的发送dealloc消息
*/
-(void)dealloc
{
NSLog(@"person dealloc");
//[super dealloc]; //禁止显式的发送dealloc消息
}
@end
主函数测试
// main.m
// 01-ARC
//
// Created by ma c on 15/8/13.
// Copyright (c) 2015年. All rights reserved.
// #import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[])
{
@autoreleasepool
{
Person *person = [[Person alloc]initWithName:@"Jim" andAge:]; [person show];
//[person dealloc];//error,底层会自动调用该方法用来销毁对象
}
return ;
}
测试结果:
-- ::54.904 -ARC[:] name:Jim,age:
-- ::54.905 -ARC[:] person dealloc
Program ended with exit code:
Objective-C:ARC自动释放对象内存的更多相关文章
- python语法-[with来自动释放对象]
python语法-[with来自动释放对象] http://www.cnblogs.com/itech/archive/2011/01/13/1934779.html 一 with python中的w ...
- UNITY Destroy()和DestroyImadiate()都不会立即释放对象内存
如题,destroyimadiate是立即将物体从场景hierachy中移除,并标记为 "null",注意 是带引号的null.这是UNITY内部的一个处理技巧.关于这个技巧有很争 ...
- C++ 0x 使用 shared_ptr 自动释放, 防止内存泄漏
最近在研究 cocos2d-x 3.0 ,它在创建类的对象时比如 Layer 时, 并不是直接使用 new , 而是使用一个宏方法 CREATE_FUNC(MyLayer);. 这个宏就是自动的创建 ...
- Objective-C:MRC手动释放对象内存举例(引用计数器)
手机内存下的类的设计练习: 设计Book类, 1.三个成员变量: title(书名)author(作者).price(价格) 2.不使用@property,自己完成存取方法(set方法,get方 ...
- obj-c编程11:内存管理和ARC(自动引用计数)
乖乖隆地洞,这篇文章内容可是不得了,内存管理哦!首先,这个要是搞不明白,你就等着进程莫名其妙的挂死,或是疯狂申请内存却不释放,结果被OS杀死,不管是"自杀"还是"他杀&q ...
- iOS内存管理系列之二:自动释放与便捷方法
有时候一个所有者创建一个对象后,会立刻将该对象的指针传递给其它所有者.这时,这个创建者不希望再拥有这个对象,但如果立刻给它发送一个release消息会导致这个对象被立刻释放掉——这样其它所有者还没有来 ...
- 刀哥多线程自动释放池autoreleasepool
自动释放池 作用 自动释放对象的 所有 autorelease 的对象,在出了作用域之后,会被自动添加到最近创建的自动释放池中 自动释放池被销毁或者耗尽时,会向池中所有对象发送 release 消息, ...
- 自动释放池autoreleasepool
自动释放池是NSAutoreleasePool的实例,其中包含了收到autorelease消息的对象.当一个自动释放池自身被销毁(dealloc)时,它会给池中每一个对象发送一个release消息(如 ...
- (20)Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)
引用计数 引用计数是c/c++项目中一种古老的内存管理方式.当我8年前在研究一款名叫TCPMP的开源项目的时候,引用计数就已经有了. iOS SDK把这项计数封装到了NSAutoreleasePool ...
随机推荐
- Java 初相识
Java是如何出现的呢?这就要回到1991年,那时候随着单片机的发展,出现了很多微型的系统,Sun公司在这个时候就成立的一个项目组,成员就有我们熟知的“Java之父” 詹姆斯·高斯林,起初的目标是为了 ...
- [leetcode shell]192. Word Frequency
统计words.txt中每个单词出现的次数并排序 解法1: cat words.txt | tr -s ' ' '\n' | sort | uniq -c | sort -r | awk '{prin ...
- 【SQL】183. Customers Who Never Order
Suppose that a website contains two tables, the Customers table and the Orders table. Write a SQL qu ...
- SKLearn数据集API(二)
注:本文是人工智能研究网的学习笔记 计算机生成的数据集 用于分类任务和聚类任务,这些函数产生样本特征向量矩阵以及对应的类别标签集合. 数据集 简介 make_blobs 多类单标签数据集,为每个类分配 ...
- codevs 1462 素数和
1462 素数和 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 青铜 Bronze 题目描述 Description 给定2个整数a,b 求出它们之间(不含a,b)所有 ...
- 【spfa】【动态规划】zoj3847 Collect Chars
转载自:http://blog.csdn.net/madaidao/article/details/42616743 Collect Chars Time Limit: 2 Seconds ...
- PHP-FPM高负载的解决办法
=================== 优化设置 ========================= When you running a highload website with PHP-FPM ...
- MVC之Global.asax解析
大家看到上面的代码了,Application_Start大家都知道这是应用程序启动入口. AreaRegistration.RegisterAllAreas是什么呢? 我们先看看微软官方的注解: 我们 ...
- 编写简单登陆和注册功能的demo时遇到的问题
一.注册功能中添加数据不成功 给数据库添加EditText中的内容后,数据库中找不到添加后的数据,并且存在字符串为空的数据 解决方法:EditText registerAccount = (EditT ...
- angularjs中如何在异步请求执行完以后再执行其他函数?
angularjs中如何在异步请求执行完以后再执行其他函数? 之前脑袋回路就是从上到下的执行js,直到有一次我的页面上已经显示了空才走到angularjs里的$http的成功回调函数里,然后才开始正视 ...