iOS 内存!!内存
TommyYaphetS
你不需要无所不知,但是需要关注和掌握能够帮助你快速学习的技巧
展开
-
使用Xcode和Instruments调试解决iOS内存泄露
虽然iOS 5.0版本之后加入了ARC机制,由于相互引用关系比较复杂时,内存泄露还是可能存在。所以了解原理很重要。这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存泄露,以及NSZombieEnabled设置的使用。本文假设你已经比较熟悉Obj-C的内存管理机制。实验的开发环境:XCode 4.5.21、运行Demo。先下载一个实现准转载 2014-03-20 10:29:08 · 1162 阅读 · 0 评论 -
Xcode的控制台调试命令
XCode4.0以后,编译器换成了LLVM 编译器 2.0与以前相比,更加强大:1.LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C++.2.LLVM 速度比 GCC快两倍,建立的程序也会运行的更快. 因为它更好的利用现代的芯片的结构.3.LLVM和Xcode 4完全的整合在一起.包括关键字高亮,代码完整性等全都是由LLVM语法分析器来分析转载 2014-04-10 22:44:42 · 1938 阅读 · 0 评论 -
解决EXC_BAD_ACCESS错误的一种方法--NSZombieEnabled
我们做iOS 程序开发时经常用遇到 EXC_BAD_ACCESS 错误导致 Crash,出现这种错误时一般 Xcode 不会给我们太多的信息来定位错误来源,只是在应用 Delegate 上留下像Thread 1: Program received signal:"EXC_BAD_ACCESS",让问题无从找起。比如你对已释放的对象发送消息时就会出现,EXC_BAD_ACCESS,再如rel转载 2014-04-10 22:45:36 · 1377 阅读 · 0 评论 -
Xcode 中设置部分文件ARC支持或者设置部分文件不支持ARC
@在XCode中经常需要导入一些外来的代码文件,如果导入的文件使用了ARC机制而你的当前项目没有使用ARC,那么xCode会给出警告,或者报错。原创 2014-04-18 17:42:00 · 8405 阅读 · 0 评论 -
delegate申请属性的时候为什么用assign而不是retain
首先delegate要使用assign而不是retain,这个问题大家通过看iOS的api就可以了,最典型的是tabView里面的delegate和datasource都是用的assign。那为什么要使用assign而不是retain呢?其实这个问题从很多方面可以说通的。首先,考虑类的设计模式,类与类只见的大体关系有继承和聚合的关系,当我们使用聚合的时候该对象就转载 2014-04-04 13:17:25 · 1405 阅读 · 0 评论 -
对于retain和assign属性的理解
比如我要定义一下字符串var:NSString *var;复制代码声明Property时,@property(nonamtic,assign)NSString *var;复制代码将属性声明为Assign,当使用@Synthsize生成Getter和Setter方法后,我们就可以用“.”操作符来为var赋值,将属性声明为转载 2014-04-04 13:14:15 · 1202 阅读 · 0 评论 -
使用Xcode和Instruments调试解决iOS内存泄露
虽然iOS 5.0版本之后加入了ARC机制,由于相互引用关系比较复杂时,内存泄露还是可能存在。所以了解原理很重要。这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存泄露,以及NSZombieEnabled设置的使用。本文假设你已经比较熟悉Obj-C的内存管理机制。实验的开发环境:XCode 4.5.21、运行Demo。先下载一个实现准转载 2014-04-19 15:06:39 · 1794 阅读 · 0 评论 -
手把手教你ARC——ARC入门和使用
本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论。请不要将本文的部分或全部内容用于商用,谢谢合作。本文适合人群:对iOS开发有一定基础,熟悉iOS开发中内存管理的Reference Counting机制,对ARC机制有听闻很向往但是一直由于种种原因没有使用的童鞋。本文将从ARC机理入手对这个解放广大iOS开发者的伟大机制进行一个剖析,并逐步转载 2014-03-20 15:42:31 · 1623 阅读 · 0 评论 -
iOS内存管理
1. 内总管理原则(引用计数) IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数。 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样。 (一般情况下: 后面会讨论例外情况) alloc 对象分配后引用计数为1 retain 对象的引用计数转载 2014-03-20 15:28:54 · 1053 阅读 · 0 评论 -
self.abc = nil 和 [abc release]的区别
self.abc = nil 和[abc release]的本质区别是前者使用property的点操作符,也就相当于调用了对应的set method,和这句是一样的:[self setAbc: nil];而后者没有通过property,直接访问了成员变量,调用了它的release方法。对于set method来说,用synthesize来让系统帮我们生成的set方法和如下的转载 2014-03-20 16:10:36 · 1559 阅读 · 0 评论 -
IOS内存管理 ARC技术概述
ARC(Automatic Reference Counting )技术概述Automatic Reference Counting (ARC) 是一个编译期的技术,利用此技术可以简化Objective-C编程在内存管理方面的工作量。这里我把此技术翻译为自动内存计数器管理技术,下图是使用和不使用此技术的Objective-C代码的区别。ARC技术是随着XCode转载 2014-03-20 15:41:41 · 1223 阅读 · 0 评论 -
Blcok的内存管理
一,前言在前文《深入浅出Cocoa多线程编程之block与dispatch quene》中我介绍了 block 的一些基本语法以及如何和 GCD 结合的使用示例。block 是在 iOS 4 中引入的新特性,它和 C++ 11 中的 lamba 表达式概念相似,有时候也被称为闭包。经过一段时间的使用,我发现要用对用好 block 还是有不少需要注意的地方,今天就来八一八这些值得注意的事转载 2014-05-01 16:12:32 · 892 阅读 · 0 评论 -
performSelector延时调用导致的内存泄露
前几天在给游戏做收尾测试时,发现了一个关于内存泄露的问题,一直没找着问题所在,经过反复调试和查找资料今天终于解决了,特此记录下来以免以后再犯!关于objective-c的内存管理,我们都知道一个原则就是“谁创建,谁释放”,换句话说,不是我们创建的,就不用我们去释放。但是实际上objective-c的内存管理远远没那么简单,我的情况是这样的:我在debug模式下面用CCLOG在dea转载 2014-03-29 09:46:51 · 1619 阅读 · 0 评论 -
依旧Block调用引起的内存泄露
@前面的文章讲到,在Block中用到self(self特指UIViewController),需要用__block或者__weak修饰(MRC与ARC的区别),因为Block调用会对其里面的对象引用计数加1,如果你不确定你调用的Block是否会产生循环引用的话,最好用__block或__weak修饰.当然,如果你确定并不会产生循环引用的情况,那你可以放心的self. self. (~O(∩_∩)原创 2014-06-05 20:28:04 · 2818 阅读 · 0 评论