新人,关于内存计数,求解惑,下面哪些情况下需要手动release呀 内存 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.NSString *a = [NSString stringwith.....] 这个函数创建出来的对象是个autorelease 的, 所以不需要你在使用完后再release。 而initWithString:包括其它的创建对象的方法,只要是以init开头的实例方法 retainCount都会加1 ,在使用完后都需要手动去release2. tmp和b 不需要手动释放 3. NSDictionary *a 如果在类中是一个成员变量,而没有定义成属性,这时需要你手动retain它,不然这样的对象会在某一时刻被释放回收,而导致程序异常。所以需要我们对它进行retain 操作 [a retain]. 在类的生命周期中,在类的dealloc方法中再去释放它release4. 函数的返回值为NSData ,对于函数返回值的内存管理是这样的。一般的我们会在函数返回的时候,返回一个autorelease的对象(前提是这个对象是自己可管理的,实例的retaincount 为1的,如果本身就是一个autorelease对象可直接返回),这样外部在调用这个函数的时候就不用担心内存管理的问题。因为这个对象被加入到了autoreleasePool(自动释放池)中。而调用它得到的对象在某种情况下还是需要使用retain 来让它驻在内存中的。 ios6 NSString 不需要释放。 iOS中如何根据输入的文字动态改变textView的宽度和高度? 点击视图区域,实现图片image的动画效果:左右摇摆 如何消除源代码中的开发证书? 开发IPhone,不得不了解的cocos2d技术 关于UIWebView的goback和cangoback的用法 VMware 上安装 mac 求解!! iphone定位的问题 tableViewCell的问题 TextField 等控件就不能像 android 一样设置 .9 背景? 求OC源代码。 @import MapKit后不能实例化问题 在做app架构的时候选择服务器需要考虑哪些因素?
2. tmp和b 不需要手动释放
3. NSDictionary *a 如果在类中是一个成员变量,而没有定义成属性,这时需要你手动retain它,不然这样的对象会在某一时刻被释放回收,而导致程序异常。所以需要我们对它进行retain 操作 [a retain]. 在类的生命周期中,在类的dealloc方法中再去释放它release
4. 函数的返回值为NSData ,对于函数返回值的内存管理是这样的。一般的我们会在函数返回的时候,返回一个autorelease的对象(前提是这个对象是自己可管理的,实例的retaincount 为1的,如果本身就是一个autorelease对象可直接返回),这样外部在调用这个函数的时候就不用担心内存管理的问题。因为这个对象被加入到了autoreleasePool(自动释放池)中。而调用它得到的对象在某种情况下还是需要使用retain 来让它驻在内存中的。