最近接受了一个项目,代码构造是很好的,但是还是使用mrc的管理方法,这次又算让我学习了一次内存管理,遇到内存释放crash的问题,搜了一篇文章,不妨使用下面的方法,可以有一个很好地定位。在XCode的以前版本中,如果遇到了[代码]c#/cpp/oc代码:1message sent to deallo...
分类:
其他好文 时间:
2015-04-22 11:29:23
阅读次数:
145
IOS经常会混合使用C代码,而在C中,对内存的读写是很频繁的操作。其中,内存越界读写 unsigned char* p =(unsigned char*)malloc(10); unsigned char c = *(p+100) ; free(p);是一种很容易犯的错误,在大部...
分类:
移动开发 时间:
2015-04-21 22:05:53
阅读次数:
265
在MRC时代,我们需要在 dealloc中做很多,比如释放对象,等等;
如今我们已经进入ARC时代,对于普通对象的释放,系统已经帮我们做好了;
那是否可以高枕无忧了呢?在ARC下我们应该做什么?
观点:
ARC下,系统可以帮我们释放该对象,及其包含的对象;
但是却无法释放不属于该对象的一些东西,如:
1.通知的观察者
由于通知中心是系统的一个单例,你在注册通知...
分类:
移动开发 时间:
2015-04-20 11:16:59
阅读次数:
165
因为公司项目最近入了MFC的这个大坑,用MFC做UI做了一段时间,感觉不是很方便,开发效率有点慢。 看了c++里面做界面的类库,感觉Duilib比较符合做界面的需求,而且很多大公司也在使用Duilib,那就随一下大流,并在此表达对Duilib作者及广大的开源作者的敬意。 Duilib支持win32程...
分类:
编程语言 时间:
2015-04-17 20:14:55
阅读次数:
358
1、Object-C 经历两个阶段: 1、手动引用计数内存管理(Manual Reference Counting,MRC) 2、自动引用计数内存管理(Automatic Refernce Counting,ARC)2、引用类型 内存分配到 堆 上,需要人为管理。 值类型 内存分配到 栈 上,有处理...
分类:
编程语言 时间:
2015-04-16 21:47:54
阅读次数:
135
假定存在 Person 这个对象,分析如下代码的对象在何时释放#import #import "Person.h"int main(int argc, const char * argv[]) { Person *p1 = nil; @autoreleasepool { p1 = [[Person ...
分类:
其他好文 时间:
2015-04-11 01:18:33
阅读次数:
205
近项目开发中,临时被调去修复一个页面返回时crash的问题。出现这个问题的原因也很巧合,正好服务地址在同事电脑上,也正巧网络请求响应时间狂慢!一个请求发出去回来的时间是40秒左右,要是在线上,肯定会让用户抓狂死!
当我打开项目的时候,点击页面返回时,发现网络请求依然在请求中,第一感觉就是内存管理上出错。在全局断点中定位到出问题的点上,竟然是delegate回调的地方出现了问题!
i...
分类:
其他好文 时间:
2015-04-09 15:31:48
阅读次数:
142
栈区:从高到低分配堆区:从低到高BSS段:没有初始化的数据区:代码段:OC内存管理方式:1 MRC 手动内存管理2 ARC 自动内存管理nil是给对象赋空值下个有道云笔记内存管理一.总结:1.只有OC对象才需要内存管理,基本数据类型无效2.OC对象存放在堆里面3.非OC对象一般放在栈里面(栈内存会被...
分类:
其他好文 时间:
2015-04-09 00:54:15
阅读次数:
219
混合使用简单的例子:; WITH cte(id,name) AS( SELECT 1,'one' UNION ALL SELECT 2,'two' UNION ALL SELECT 3,'three')SELECT * FROM cte
分类:
其他好文 时间:
2015-04-03 18:52:45
阅读次数:
102