iOSBoy 2015-05-15T07:31:03+00:00 taoyu.developer@gmail.com iOS Common Math Functions 2015-05-15T00:00:00+00:00 Tony http://iosboy.github.io/ios-common-math-functions 取整
  • 向上取整 double ceil (double)
  • 向下取整 double floor (double)

绝对值

  • 绝对值 double fabs (double)
]]>
iOS System Architecture 2015-05-10T00:00:00+00:00 Tony http://iosboy.github.io/ios-system-architecture iOS 系统架构如图 一、核心操作系统层(Core OS layer):

  • Core OS是用FreeBSD和Mach所改写的Darwin
  • 提供了硬件驱动, 内存管理,程序管理,线程管理(POSIX),文件系统,网络(BSD Socket),标准输入输出等功能

二、核心服务层(Core Services layer):

  • 电话本(AddressBook.framework)
  • 核心基础框架(CoreFoundation.framework)
  • CFNetwork(CFNetwork.framework)
  • 核心位置框架(CoreLocation.framework)
  • 安全框架(Security.framework)
  • SQLite
  • 支持XML

三、媒体层(Media layer):

  • 图像技术(Graphics Technologies)
  1. Quartz。核心图像框架(CoreGraphics.framework)
  2. 核心动画(Core Animation)
  3. OpenGL ES
  • 音频技术(Audio Technologies)
  1. 核心音频(Core Audio Family)

    框架(Framework) 服务(Service)
    CoreAudio.framework 定义核心音频的音频数据类型
    AudioUnit.framework 提供音频和流媒体文件的回放和录制,并且管理音频文件和播放提示声音
    AudioToolbox.framework 提供使用内置音频单元服务,音频处理模块
  2. OpenAL

  • 视频技术(Video Technologies)

四、可触摸层(Cocoa Touch layer):

  • UIKit框架(UIKit.framework)
  • 基础框架(Foundation.framework)
  • 电话本UI框架(AddressBookUI.framework)

参考资料

]]>
解决 Message Sent to Deallocated Instance 2015-02-09T07:12:02+00:00 Tony http://iosboy.github.io/how-to-solve-message-sent-to-deallocated-instance 前言

iOS开发过程中经常遇到一个恶心的问题就是过度释放造成app奔溃。这种Crash出现的log信息量少。而且很难一眼看到问题出现在什么地方。唯一知道的信息就是这个Crash是因为内存管理不当过度释放的问题。这时候我们很多人(我也在其中)的解决方案时根据操作出现的奔溃来猜测可能时哪里的问题,然后去一行行review代码(体力活啊)。之前我一直用这种方法。这个方法在涉及到模块代码量不是很大的情况下还是计较有效的。但是一旦涉及到的代码量很大的情况比较复杂的情况下这种方法会让你抓狂。代码太多涉及到的文件很多你根本不知道哪里地方出问题了。在这种情况下你要想使用一行行review代码的方法那将花费你很多的时间还不一定能找到问题出在哪里。在这个过程中你会抓狂很多次,小伙伴们有没有。好了干货来了。接下来我们来看一下一种高效调试这种Cras的方法。

首先打开你的Xcode 修改scheme为debug模式(使用instruments进行调试时默认配置是release模式) 如下图

1.打开修改scheme界面

2.修改scheme调试模式

3.使用Profile模式运行你的App

4.选择Zembies

5.开始调试

6.按照你之前的操作复现Crash。Crash复现后回出现一个紫色的箭头点击会弹出Zembie Messaged框如图

7.点击6中Zembie Messaged框的箭头跳转到如下视图。

8.看到7中标准的红色框内点击最上面的那个横线会转到你有问题的代码里面如下图

看到这里你里面就明白了原来问题出在这里啊。是不是很方便呢。到这里我们就介绍完了如何解决过度释放造成的Crash。

参考链接

Stack Overflow

]]>