`
MagicBird
  • 浏览: 137302 次
  • 性别: Icon_minigender_2
  • 来自: 惠州
社区版块
存档分类
最新评论

Day13 oc autorelease

    博客分类:
  • ios
 
阅读更多

autorelease

autorelease方法会返回对象本身,调用后会将对象放入自动释放池中,当自动释放池销毁时,会对池中所有对象做一次release操作

Person *p = [[[Person alloc] init] autorelease];//对象计数器并没有变

 ios5.0以后,自动释放池的使用

@autoreleasepool
{//括号开始代表创建自动释放池
}//括号结束代表销毁

 即

@autoreleasepool//延缓了对象释放的时间,缺点也是不能精确控制对象的销毁
{//1
Person *p = [[[Person alloc] init] autorelease];
//Person *p = [[[[Person alloc] init] autorelease] autorelease];调用几次autorelease,池子释放时会做几次release操作,因此会释放两次,报错
@autoreleasepool
{//2
//池子的管理采用栈数据结构(先进后出),1在栈底,2在1上面
}
}

 ps:占用内存较大的对象不要随便使用autorelease

ios5.0之前

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[pool release];

 代码中一般将autorelease封装到类方法中

@interface Person:NSObject
+(id)person;
@end


@implementation Person
+(id)person
{
return [[[self alloc] init] autorelease];//一定要使用self,可以满足子类需求,不要直接用类名
}
@end


调用时
@autorelease
{
Person *p = [Person person];
}

使用原则:

1、系统自带方法里没有alloc、new、copy,说明返回的对象都是autorelease的

2、开发中常提供些类方法快速创建autorelease过的对象

 

分享到:
评论

相关推荐

    前端开源库-node-circleci-autorelease

    前端开源库-node-circleci-autorelease节点circleci autorelease,在circleci上创建释放标记

    autorelease-github:通过 GitHub API 为您的构建管道自动发布

    autorelease-github 通过 GitHub API 为您的构建管道自动发布 这是一个非常简单的项目,它需要 N 个文件并使用 bash、curl 和 jq 通过上传它们。 它旨在成为构建管道中的嵌入式发布构建。 输入是一堆文件和一个放...

    Node.js-mysql-autoRelease:node.js mysql事务自动释放连接

    Node.js-mysql-autoRelease node.js mysql transaction Auto Release connection\ 实现Node.js中连接池自动回收连接功能

    AutoReleaseTool:自动部署桌面应用程序的CICD工具

    通过在完整的CI / CD管道配置中使用AutoRelease,为您的桌面应用程序创建新版本并将其部署到其用户所需的全部过程很简单: 将您的更改推送到定义的github版本分支触发一个webhook,该webhook将在 WM中启动构建过程...

    Auto Release Sh*t-crx插件

    语言:中文 (简体) 自动生成发版申请 它根据地址自动生成发版申请单,故名:auto-release-sh*t

    iOS 5 ARC完全指南

    autorelease 、release 、retain 调用 19 dealloc 方法 20 AutoreleasePool 20 To l l- Free Bridging 21 Delegate 和 Weak Property 26 unsafe_unretained 27 iOS 4 中使用ARC 27 ARC 高级指南 28 Blocks ...

    弹出框的运用

    PoPoverViewController * popover = [[[PoPoverViewController alloc]initWithNibName:@"PoPoverViewController" bundle:nil] autorelease]; popover.mainViewController = self; UIPopoverController * pcr = [...

    Google Objective-C Style Guide 中文版

    创建对象时尽量使用autorelease Autorelease之后retain Dealloc中应该按声明的顺序处理成员变量 Setters中对NSString进行copy 避免抛出异常 nil的检查 BOOL陷阱 属性 Cocoa模式 委托模式 模型-视图-控制器

    iPhone开发、ObjectiveC_面试题目

    1、ObjC中,与alloc语义相反的方法是dealloc还是release?与retain语义相反的方法是dealloc还是release,为... 13、什么是Notification? 14、什么时候用delegate,什么时候用Notification? 15、什么是KVC和KVO?

    有时侯我们需要延迟一个对象的引用计算减一操作

    我们需要先创建一个auto release pool,才能有效地实现autorelease机制,否则会导致内存泄露。当一个对象obj发送autorelease消息时,会发生如下过程:

    FRCSVFormatter:CocoaLumberJack 日志框架的 CSV 格式器

    FRCSV格式器 FRCSVFormatter 是很棒的日志框架的日志格式化程序 它使用起来很好且简单,您只需将其设置为您选择的... 2011-07-14 13:52:02:449, ,didFinishLaunchingWithOptions (null),207,fbchatAppDelegate,120 2

    Iphone面试题

    6. 写一个NSString类的实现 + (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding; + (id) stringWithCString: (const char*)...
 return AUTORELEASE(obj);
}

    object-c基础教程

    大纲  开始吧 o 下载这篇教学 o 设定环境 o 前言 o 编译 hello world  创建 Classes ...o Autorelease Pool  Foundation Framework Classes o NSArray o NSDictionary  优点与缺点  更多信息

    Objective C Memory Management Essentials(PACKT,2015)

    You will begin with a basic understanding of memory management, and why memory leaks occur in an application, moving on to autorelease pools and object creation/storage to get an idea of how memory ...

    MSLabel:自定义标签允许您指定行高和文本锚定

    MSLabel 是一个自定义 UILabel,允许您指定 ... MSLabel *titleLabel = [[[MSLabel alloc] initWithFrame:CGRectMake(0, 0, 100, 50)] autorelease]; titleLabel.lineHeight = 13; titleLabel.anchorToBottom

    详细描述了Object-C中的内存管理,超级简单

    Objective-C提供了一系列的内存管理规则,包括MRC(Manual Reference Counting)中的`retain`、`release`和`autorelease`概念,以及在ARC(Automatic Reference Counting)中由编译器自动插入内存管理代码的机制。...

    02-内存管理1

    1> 系统自带的绝大数类方法返回的对象,都是经过autorelease的4.block在ARC中和MRC中的用法有什么区别,需要注意什么1.对于没有引用外部变量

    支持卡片式的列表视图特效

    [UIScreen mainScreen].applicationFrame] autorelease]; view.delegate = self; view.dataSource = self; view.animationStyle = RSCardsViewAnimationStyleExchange; // or RSCardsViewAnimationStyleDrop ...

    objective-c-tutorial:这是我在学习时编写的所有目标c教程代码

    客观教学这是我在学习时编写的所有目标c教程代码#基本语法正常的printf操作NSlog示例autoRelease池示例#NSString操作NSString操作在这里NSRange示例NSMutableString示例#NSArray示例NSArray示例NSArray函数示例...

    Objective-c对象组装XML

    NSMutableString *a = [[[NSMutableString alloc]init]autorelease]; NSMutableArray *nodelist = [node getChilds]; for (int i=0;i<[nodelist count];i++) { XmlNode *node = [nodelist objectAtIndex:i]; ...

Global site tag (gtag.js) - Google Analytics