摘要: http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-11. SIGABRT,它是个好东西。通常是系统检测到程序做了一些不应该做的事情。通常有错误提示信息。2. 添加异常断点:“All Exceptions”,把stacktrace窗口的滑块拖到最大。3. 从警告中查线索,建议修复所有警告。4.“This class is not key value coding-compliant”,[UIRuntimeOutletConnection connect]. 通常是outlet 缺失,没关联或者函数签名不对5.C-sty 阅读全文
posted @ 2013-07-27 14:59 AlexHHC 阅读(234) 评论(0) 推荐(0) 编辑
摘要: To getXcode 4.2on Snow Leopard to run code on adevice running iOS 5.1you can do this:If you have another Mac running Lion and Xcode 4.3.1 you can copy the files from:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.1 (9B176)Place the copied files in the equivale 阅读全文
posted @ 2013-07-23 20:25 AlexHHC 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 静态库问题,把静态库删了重新加进去。 阅读全文
posted @ 2013-07-23 16:41 AlexHHC 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 1.查看xcode的版本号和build版本$ xcodebuild -version显示内容:Xcode 4.2Build version 4D1992.显示当前系统的sdk、及其版本$ xcodebuild -showsdks显示内容:Mac OS X SDKs: Mac OS X 10.6 -sdk macosx10.6 Mac OS X 10.7 -sdk macosx10.7iOS SDKs: iOS 5.0 -sdk iphoneos5... 阅读全文
posted @ 2013-07-17 14:37 AlexHHC 阅读(279) 评论(0) 推荐(0) 编辑
摘要: iOS 理解Crash Logu作为从Android转到iOS的程序员,我觉得最不适应的地方可能就是对bug的定位。在Android中,由于使用Java跑在Java虚拟机上,所以当程序出错时(一般是不会直接操作内存的,所以一般不会有有直接的内存错误),往往是抛出一个异常,关于这个异常的一系列栈信息都能完整的拿到,这对于查找问题的出处来说,就变得非常简单了。但是在iOS上,由于使用Objective-c 和 c ,直接执行二进制指令,自己管理内存,会出现访问错误内存的情况出现。这时,系统会直接把你的进程干掉,iOS会给你生成一个Crash Log(如果是调试状态,通常会断在某个地址,基本上没办法 阅读全文
posted @ 2013-07-04 19:07 AlexHHC 阅读(1802) 评论(0) 推荐(0) 编辑
摘要: 由于iOS5.0之前没有自动应用计数机制,也没有Java那样的垃圾回收功能。我们都需要自己管理和控制对象的回收,这是一件很麻烦的事情,也是做iOS项目中最容易出现的问题。如果不掌握这些方法,调试这些问题几乎没有头绪。1、EXC_BAD_ACCESS内存错误与NSZombieEnabledEXC_BAD_ACCESS是最常见的错误了,这个一般是访问了释放了的内存地址空间造成的。比如一个对象已经dealloc了,如果你仍向这个对象发送消息,就会出现这个错误。由于出现这个错误时,几乎不显示什么有用的信息,我们根本无法确定程序错在何处。使用NSZombieEnabled环境变量可以很好的解决这个问题。 阅读全文
posted @ 2013-06-06 14:20 AlexHHC 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 1.CGAffineTransformMakeTranslation每次都是以最初位置的中心点为起始参照 CGAffineTransformTranslate每次都是以传入的transform为起始参照 CGAffineTransformIdentity为最初状态,即最初位置的中心点2.3个按钮,bt1,bt2,bt3,bt1和bt2控制bt3的移动- (IBAction)bt1clicked:(id)sender { self.bt3.transform=CGAffineTransformMakeTranslation(10,0);}- (IBAction)bt2clicked:(id)se 阅读全文
posted @ 2013-06-04 11:18 AlexHHC 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 自iOS6.0后获取通讯录列表需要询问用户,经过用户同意后才可以获取通讯录用户列表。而且ABAddressBookRef的初始化工作也由ABAddressBookCreate函数转变为ABAddressBookCreateWithOptions函数。下面代码是兼容之前版本的获取通讯录用户列表方法。ABAddressBookRef addressBook = nil;if ([[UIDevice currentDevice].systemVersion floatValue] >= 6.0) { addressBook = ABAddressBookCreateWithOptions(N. 阅读全文
posted @ 2013-05-31 10:20 AlexHHC 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 何时回收1. window 报内存不足2. 强制调用GC.Collect3. 内存不足,正确说法是第0代对象充满时。4. CLR卸载AppDomain,GC将所有代龄的对象回收。5. 物理内存不足代龄(Generation):为啥会有这个东西,因为内存回收后会留下内存“空洞”,需要挪动内存并且对对象重定位。这样很耗性能,所有就引入generation的东西,降低垃圾回收的频率。微软强烈不建议通过GC.Collect方法来强制执行垃圾回收,因为会是对象代龄不断提升。Finalize:C#不可以显示重写Finalize方法,只能通过析构函数来实现struct 不允许定义析构函数,只有class可以 阅读全文
posted @ 2013-04-21 18:21 AlexHHC 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 我很早就能够区分它们,但是要描述他们的区别就觉得很难,所以还是要整理一下。进程和线程都是由操作系统执行程序的基本单元,系统利用该基本单元实现系统对应用的并发性。简而言之,一个程序至少有一个进程,一个进程至少有一个线程.、相同点:1. 二者都具有ID,一组寄存器,状态,优先级以及所要遵循的调度策略。2. 每个进程都有一个进程控制块,线程也拥有一个线程控制块。区别:1. 创建和切换的开销:前者开销大,后者开销较小。这就是最基本的区别。2. 粒度:线程的划分尺度小于进程,使得多线程程序的并发性高。3. 地址空间:进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个 阅读全文
posted @ 2013-04-21 16:38 AlexHHC 阅读(194) 评论(0) 推荐(0) 编辑