摘要:
在真机,或真机没连接到电脑时,可以把日志信息输出到文件1.设置日志文件路径 1 - (NSString*)logFilePath { 2 //非越狱版路径 3 #ifndef CRACK 4 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 5 NSString *documentsDirectory = [paths objectAtIndex:0]; 6 //越狱版路径 7 #else 8 NSString *d... 阅读全文
摘要:
1. 通过分配或复制创建的对象保持计数12. 假设任何别的方法获取的对象保持计数1,而且在自动释放池中. 要想在当前执行范围外使用该对象,就必须保持它3. 向集合添加对象时它就被保持,从集合移除对象时就被释放.释放集合对象会释放该集合中的所有对象4. 确保有多少alloc,copy,mutableCopy或retain消息就有多少release或autorelease消息发送给该对象. 换句话说,确保你的代码平衡5. 在访问方法设置属性,先保持,再释放 (ztime: 现在有@propperty , @synthesize 两个指令自动创建此代码)6. 用@"..."结构创 阅读全文
摘要:
EXC_BAD_ACCESS错误一般难以跟踪,出现的原因:对一个已经释放的对象进行release,或向已经释放的对象发送消息其实就是使用了野指针定位出错点:1.添加NSZombieEnabled环境变量(参考设置NSZombieEnabled和MallocStackLogging)在EXC_BAD_ACCESS发生时,控制台会打印问题描述比如输出:Untitled[3646:a0f] *** -[CFString release]: message sent to deallocated instance 0x10010d3402.此时就可以通过以下命令,得到信息(gdb) shell mal 阅读全文
摘要:
在模拟器上调试时,经常遇到内存访问错误,如下:2012-02-14 11:21:11.41 App[2433:205] *** -[Test retain]: message sent to deallocated instance 0x11e4fb1.在设置了MallocStackLogging之后(可查看设置NSZombieEnabled和MallocStackLogging)就可以在终端上输入 info malloc-history 命令,如下所示:(gdb) info malloc-history 0x11e4fb其中0x11e4fb为出错地址,这样就能得到堆栈信息2.此外,还有另一个 阅读全文
摘要:
在XCode,4以上版本中,设置NSZombieEnabled和MallocStackLogging1.点击XCode的Product菜单,选择Edit Scheme...选项2.选择左侧的Run...,右边点击Arguments3.在Environment Variables栏里,添加NSZombieEnabled,value为YES;再添加MallocStackLogging,value为YES;如下图所示:以上选项只能在模拟器上有效,如果你改变了iOS的版本,需要重新设定。调试结束后,最好记得把环境变量NSZombieEnabled,MallocStackLogging前面的勾去掉,因为 阅读全文