随笔分类 - 04 内存管理
摘要:1、指针和对象,都是内存块。一个大,一个小。一个在栈中,一个在堆中。2、iOS中,我们可以生命一个指针,也可以通过alloc获取一块内存。3、我们可以直接消灭掉一个指针,将其置为nil。但是我们没办法直接消灭一块对象内存。对于对象内存,我们永远只能依靠系统去回收。而什么时候回收,就需要使用苹果为我们...
阅读全文
摘要:1、怎样写一个不泄漏的NavigationController页面跳转程序?非arc模式下,假设有A、B两个viewController,从A推到B,怎样写内存才能不泄漏?A.m-(IBAction)btnGoToViewControllerB:(id)sender{ ViewControll...
阅读全文
摘要:在我的理解来说: 对象(object)即一块内存,本文要探讨的是一个Objective-C对象在内存的布局(layout)问题,水果的官方文档有说,一个类(class)如果不需要从NSObject继承其某些特定的行为是不用继承NSObject的,这里我将讨论限制在继承了NSObject的类的对象范...
阅读全文
摘要:苹果:Instruments User GuideiPhone Memory Debugging with NSZombie and Instruments苹果:Mac OS X Debugging Magic——高级瓶盖调试技巧必备
阅读全文
摘要:一句话:dealloc 就是释放当前类所持有的对象即可。不是当前类持有的对象,就不要去释放了。但是当前类持有的对象,一定要释放。推荐以下视频,虽然简单,但是基本原理讲清楚了。http://code4app.com/course/24-2904-3022在非ARC开发环境中,dealloc是类释放前,...
阅读全文
摘要:关于ios内存管理。在开发过程中,内存管理很重要,我简单说明一下。1.正确用法UIView*v = [[UIViewalloc]init]; //分配后引用计数为1[self.viewaddSubview:v];//这儿引用计数加1,为2[vrelease];//这儿引用计数为1最后系统在回收sel...
阅读全文
摘要:from: 10天掌握iOS开发之Day2 - 内存管理
阅读全文
摘要:ios的内存管理,包括对象的所有权与引用计数、自动释放、访问器方法与属性、一些会改变引用计数的特殊情况 ----- 对象所有权(ownership) 与引用计数 (retain count 、reference count) 当一个所有者(owner,其本身可以是任何一个Objective-C对象)...
阅读全文
摘要:转:http://www.cocoachina.com/applenews/devnews/2013/1126/7418.html内存管理策略(memory Management Policy)NSObject protocol中定义的的方法和标准命名惯例一起提供了一个引用计数环境,内存管理的基本模...
阅读全文
摘要:警告:value stored to value2 during its initialization is never readNSMutableArray *datesArray = [[NSMutableArray alloc]init];datesArray = [_onDemandDict...
阅读全文
摘要:在project-setting中找到 “Run Static Analyzer” 键,然后把值修改为“YES”.这样在编码的时候,xcode就可以自动为我们检查内存泄露了.原图片:http://blog.csdn.net/shijiucdy/article/details/8185968xcode...
阅读全文
摘要:1、一个关于委托内使用全局变量和属性变量的经验经验:1、属性变量进入委托方法,无论之前retain count为几,出来后将被置为1。2、全局变量进入委托方法, 无论之前retain count 为几,委托方法执行完后将被dealloc.3、同样是属性变量,如果在委托方法中使用self.** 则执行...
阅读全文
摘要:Lazy,谁懒?当然是计算机偷懒。通常用法,你有一个NSArray的property,但是你不在初始化方法里为其alloc/init,它就只是一个指针,不会占用内存。然后你写了此property的访问器,在访问器里判断此property的指针是否为空,若为空,就alloc/init,这时才真正生成这...
阅读全文
摘要:如果属性是copy、retain的话是等价的。如下:- (void)setXXX:(NSString*)axx{ if (_xxx != axx) { [_xxx release]; _xxx = [axx copy]; }}拆分下就知道了, 将nil代入(即axx) 对nil进行retain/copy返回仍然是nil所以,等价。转:http://www.cocoachina.com/ask/questions/show/94713
阅读全文
摘要:1.IBOutlet对象需要release2.不停的往UIView,特别是UIScrollView上add相同SubView。一定要记得清除之前的SubView,并且在dealloc函数中执行该方法for(UIView* sbViewinscrvBg.subviews){ [sbViewremoveFromSuperview];}这里还有个获得subView的小技巧:[subViewsetTag:300];subView = [self.viewviewWithTag:300]3.dealloc不一定会被调用,所以可以自己手写一个myRelease方法,当退出该界面的时候手动调用releas.
阅读全文
摘要:copy与retain的区别:copy是创建一个新对象,retain是创建一个指针,引用对象计数加1。Copy属性表示两个对象内容相同,新的对象retain为1,与旧有对象的引用计数无关,旧有对象没有变化。copy减少对象对上下文的依赖。 retain属性表示两个对象地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1也就是说,retain是指针拷贝,copy是内容拷贝。当然在ios中并不是所有的对象都支持copy,mutableCopy,遵守NSCopying 协议的类可以发送copy消息,遵守NSMutableCopying 协议的类才可以发送mutableC..
阅读全文
摘要:在返回按钮中,释放内存:-(IBAction)btnBack:(id)sender{ if ([self.str_superViewName isEqualToString:@"ShakeViewController"]) { [configData setObject:@"YES" forKey:@"isShake"]; } //移出两个比较大的重要的子页面 [self.uisv_scrollView0 removeFromSuperview]; [self.scrView removeFromSuperview]; //移出所有子
阅读全文
摘要:NSArray *views = [self.view subviews]; for (id obj in views) { NSLog(@"obj class === %@",[obj class]); [obj removeFromSuperview]; }
阅读全文
摘要:在iOS开发中,为了节约时间,程序员经常会用全局变量代替属性。但是这样做,尤其是新手开发中,经常会引起内存泄露的报错,其实作为苹果自己也没有给出一个完美安全的内存管理代码例子。但是在iOS开发到如今,有一个相对比较安全的内存管理模版。 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. CGRect fram=[UIScreen mainScreen].bounds; UIView *...
阅读全文