nsstring-oc中自动释放池的问题

问题描述

oc中自动释放池的问题
 int main(int argc, const char * argv[]) {

    @autoreleasepool {
        NSString *str = [NSString stringWithFormat:@"%d",10];
        NSArray *array = [NSArray arrayWithObjects:@"9",@"10", nil];
        NSNumber *num = @23;
        [num autorelease];
//        [str autorelease];
//        [array autorelease];
    }

问题是:我听人说类方法是自动加入释放池的,而不用对象调用autorelease方法
但我个人测试看一下,代码如上,str和array这2个对象,我分别重写了NSString和NSArray的dealloc函数,但是发现str不管是写不写[str autorelease]都是不会被销毁的,而array则不需要写[array autorelease]就能被销毁,测试上说明NSArray类型的对象自动加入了释放池,而NSString的对象加入不了,求解答到底是不是这样?

解决方案

oc内存管理 ---自动释放池

时间: 2024-10-29 18:43:45

nsstring-oc中自动释放池的问题的相关文章

objective-C 的内存管理之-自动释放池(autorelease pool)

如果一个对象的生命周期显而易见,很容易就知道什么时候该new一个对象,什么时候不再需要使用,这种情况下,直接用手动的retain和release来判定其生死足矣.但是有些时候,想知道某个对象在什么时候不再使用并不那么容易.如果下面的代码,看上去非常简单: Sample.h类接口部分 #import < Foundation / Foundation.h > @interface Sample : NSObject { } -(NSString*) toString; @end Sample.m

ai-求OC中自动生成变量名的方法

问题描述 求OC中自动生成变量名的方法 如题 求大神指导.比如 char * a1="aaaaaaaa"; char * a2="bbbbbbb"; char * a3="ccccccccc"; ............ char * an="nnnnnnn"; 变量命名规则都是char * an n值是从1到n的数字,n我知道. 问题:如何依次遍历a1到an 想要类似如下的用法 for(int i=0;i<n;i++)

c++在类的方法中被实例化的对象能自动释放内存么

问题描述 c++在类的方法中被实例化的对象能自动释放内存么 我没有使用new,就是最一般的实例化,如果没有的要怎么释放,求大神教具体的方法 解决方案 没有使用new,就是最一般的实例化,系统会自动释放的. 解决方案二: 当对象的生命周期终止时会自动释放对象所占用的内存. new声明的对象保存在堆中,直到调用delete时生命周期才终止.对象销毁内存被释放. 而直接创建的对象是保存在局部栈中,出了大括号,生命周期就终止了,对象销毁自动释放内存.函数体就是用一个大括号包起来的,函数内声明的对象,出了

oc NSString 方法中 替换方法

问题描述 oc NSString 方法中 替换方法 oc NSString 方法中 NSString *string = @"This is a const string"; NSString *string11 = [string stringByReplacingOccurrencesOfString:@"is" withString:@"are"]; 这个将is全部替换,如何选择性替换is,比如第二个is 解决方案 http://blog.

类 c++ 面向对象-c++在类的方法中被实例化的对象能自动释放内存么

问题描述 c++在类的方法中被实例化的对象能自动释放内存么 我没有使用new,就是最一般的实例化,如果没有的要怎么释放,求大神教具体的方法 解决方案 如果没有new,那么是栈上变量,它除了生命期就会自动释放. 解决方案二: 对象的析构函数在的对象销毁前被调用,对象何时销毁也与其作用域有关. 例如,全局对象是在程序运行结束时销毁,自动对象是在离开其作用域时销毁,而动态对象则是在使用delete运算符时销毁. 解决方案三: 可以自动释放.你可以看一下c++内存管理:http://www.cnblog

【IOS-COCOS2D-X 游戏开发之十五】COCOS2DX中响应ANDROID的BACK(返回)与MENU(小房子)事件&amp;&amp;COCOS2DX自动释放粒子内存函数!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2dx/792.html 本篇介绍两个常用知识,一个是粒子的自动释放机制函数,因为不少童鞋说cocos2dx为什么没有? 其实是没找到,这里特意拿出来说下!另外一个是如何响应Android的Menu菜单和Back返回事件的方法: 首先对于Cocos2dx中对于粒子自动释放的函数Himi这里给出,不少童鞋都在群里或者论坛

ios-新人请教OC中self用法

问题描述 新人请教OC中self用法 新人小白,求教下面的获取文本框.标签的文本属性为什么都要用self.num1.text,self.resultLabel.text, 不能直接用num1.text,resultLabel.text??? #import "HMViewController.h" @interface HMViewController () @property (nonatomic, weak) IBOutlet UITextField *num1; @propert

iOS开发几年了,你清楚OC中的这些东西么!!!?

前言 几年前笔者是使用Objective-C进行iOS开发, 不过在两年前Apple发布swift的时候,就开始了swift的学习, 在swift1.2发布后就正式并且一直都使用了swift进行iOS的开发了, 之后就是对swift持续不断的学习, 近来swift3.0的发布, 更多的人会选择swift来进行iOS的开发看上去更是成为了一种趋势, 不过一个合格的iOS开发者对oc以及c语言的掌握是必不可少的技能, 本篇中主要是写一些大家平时都可能用到但是不一定知道的oc的东西 oc中的对象的创建

Oracle内存分配中的子池(Subpool)--ORA-04031

Oracle内存分配中的子池(Subpool)--ORA-04031 在 Oracle 9i 和之后的版本,共享池可以被划分为子池.每个子池是一个小号的共享池,有它自己的空闲列表,内存结构条目,和LRU列表.这是一个对共享池和大池的可扩展性的改变,现在每一个子池都由一个 child latch 来保护,因此可以增加这些池的吞吐量.这意味着不再有之前版本的对于共享池和大池的单独 latch 的竞争.共享池中的保留区域也被平均的划分到每个子池中. 当你遇到 ora-04031 时,trace 会显示