iOS之Monkey
摘要:【iOS之Monkey】 在跑Monkey的同时,添加上allocation、leaks、timepro模块,可以极大的帮助我们监测到APP的性能问题。 在测稳定性的同时,Allocation可以监测到内存使用情况,Leaks可以监测到内存泄露,Time Profiler可以完整在查看到函数轨迹,在定位崩溃时非常有用。
阅读全文
iOS之Enable Zombie Objects
摘要:【iOS之Enable Zombie Objects】 Zombie启动后,被释放的对象并不会真正的释放,而是会被转变为_NSZombie_XXXX类型的对象。也即意味着,使用Zombie特性后,对象并不会释放。参考:《Effective Objective-C 2.0》 第35条。
阅读全文
iOS之消息路由的特性
摘要:【iOS之消息路由的特性】 在从IOS5.0以后,子View将touchesBegan传递给父窗口后,父窗口会自动收到后续的touchesMoved、touchesEnd消息。 但在IOS5.0之前,即从IOS4.3.3开始,子View将touchesBegan传递给父窗口后,父窗口只能收到touchesBegan,并不会接收到后续的touchesMoved、touchesEnd,如果要接收的话,则要显式的传递。
阅读全文
iOS之ImageMask
摘要:【iOS之ImageMask】 iOS下的Mask有4种: 1、MaskImage 2、Image 3、Color 4、clipArea 详细资料见:《Quartz 2D Programming Guide》。
阅读全文
iOS之透视效果
摘要:【iOS之透视效果】 1、汽车透视:http://code4app.com/ios/透视图Demo/5046afea6803faa235000007 此例采用clipToBounds属性,利用2个图完成效果。 2、擦拭效果:http://code4app.com/ios/Scratch-and-See/4f9ff02206f6e7673e000000 此例采用offscreen Bitmap及2张图完成效果。 2个方法从不同角度完成了透视效果,由于汽车的透视是以矩形区域为准,所以巧妙的采用了clipToBounds属性。通用来讲,方法2可以试用于大多数情况。
阅读全文
iOS之优先使用autorelease
摘要:【iOS之内存管理】 避免其它平台中狗血的释放方式: 上述方式,申请内存,做操作,然后释放。要避免这种方式。原因: 1、如果中间操作代码庞大,后续Coder很容易忽略释放的部分,而在操作中间加上return代码,导致泄露。 2、如果一个优秀的Coder注意到了1中的问题,在return时释放jsonWriter,此法也可以,但代码太丑。 如果有多处return,则每处都要写release;如果有多个临时变量需要release,则每个return都要写多个release,极其丑陋。 上述问题应该采用iOS独有的内存管理方式编写: 采用autorelease,完美解决上述问题。
阅读全文
iOS调试之挂起线程
摘要:【iOS调试之挂起线程】 iOS调度的时候可以挂起一个程序,在需要的时候再将其设为运行。 参考:https://developer.apple.com/library/ios/#recipes/xcode_help-debug_navigator/articles/suspending_a_thread.html#//apple_ref/doc/uid/TP40010432-CH4-SW1 某些情况下,特性还是有些用的。
阅读全文
iOS之Starfield
摘要:【iOS之Starfield】 看了一个非常炫的3D效果,用CoreImage中的CIFilter做的,非常棒。 地址:http://parmanoir.com/Core_Animation_Starfield 老外果然牛逼
阅读全文
iOS之Transition动画
摘要:【iOS之Transition动画】 第一眼看Quartz2D的动画会觉得神奇兼奇怪,为什么苹果会规定Transition动画要按照下面的样例写: 苹果官方文档写到:把view属性变化的代码放置于beginAnimation和commitAnimation之间,即可自动实现动画效果。 那苹果的框架是如何捕获或感知到这中间的代码块的?先看看CoreAnimation中的动画框架解释。 当设置一个layer的值的时候,Layer-Tree(L-Tree)立即改变,而展示的Presentation Tree是由插值渐变。所以CoreAnimaton对代码块的捕获实际上是用Layer-...
阅读全文
iOS之Block笔记
摘要:【iOS之Block笔记】 1、Block如果定义在函数中,则生成在栈上,当离开作用域后,block就被释放。如果定义在全局,则生成在全局空间。全局空间block永不释放。对于下图代码,block的调用会失败。 2、如果一个Block没有引用外部变量则可以安全的直接用“=”传递指针,以供后续...
阅读全文
iOS之流式捕捉图像的阻塞问题
摘要:【iOS之流式捕捉图像的阻塞问题】 上周图像搜索中讨论过的一个问题,流式处理图像的回调函数阻塞时,新到的包默认会被丢弃,有属性可以控制是否丢弃,默认是丢弃。
阅读全文
iOS之直接Alpha与预乘Alpha的区别
摘要:【iOS之直接Alpha与预乘Alpha的区别】直接 Alpha 和预乘 Alpha 的区别使用直接 Alpha 描述 RGBA 颜色时,颜色的 Alpha 值会存储在 Alpha 通道中。例如,若要描述具有 60% 不透明度的红色,请使用以下值:(255, 0, 0, 255 * 0.6) = (255, 0, 0, 153)。值 255 指示全红,153(255 的 60%)指示颜色应具有 60% 的不透明度。使用预乘 Alpha 描述 RGBA 颜色时,每种颜色都会与 Alpha 值相乘:(255 * 0.6, 0 * 0.6, 0 * 0.6, 255 * 0.6) = (153, 0
阅读全文
iOS之JSON框架的选择
摘要:【iOS之JSON框架的选择】 参考:http://hi.baidu.com/yanh105/item/7cbcaff9bc2baac50dd1c8a0 目前组内项目使用的是SBJSON,该文章推荐使用iOS开发框架所提供的NSJSONSerialization 类来解析。但该裤仅在iOS5以后版本SDK才提供。
阅读全文
iOS之HTTP框架的选择
摘要:【iOS之HTTP框架的选择】 可以根据功能及易用性来选择。这里比较NSURLConnection、ASIHTTPRequest两个框架。URLLoadingASIHTTPRequest1.同步发送请求●●2.异步发送请求●●3.便捷构造HEADER×●4.便捷的构造POST×●5.保存到内存×●6.保存到磁盘×●7.便捷获取Response●●8.上传进度感知×●9.下载进度感知●●10.处理Authentication●●11.Cache管理●●12.Cookie管理●●13.上传自动压缩×●14.下载自动解压×●15.
阅读全文
iOS之Payload、Trailer
摘要:【iOS之Payload、Trailer】 A packet generally contains three basic parts: a header that tells where the packet should be sent, a payload that contains the actual data, and a trailer that contains checksum information to ensure that the packet was received correctly. Some packet types include this checks.
阅读全文
iOS之线程间通信
摘要:【iOS之线程间通信】 Cocoa为iOS线程间通信提供2种方式,1种是performSelector,另1种是Port。 先说第1种,performSelector,有以下几种: 第2种为NSMachPort方式。NSPort有3个子类,NSSocketPort、NSMessagePort、NSMachPort,但在iOS下只有NSMachPort可用。 使用的方式为接收线程中注册NSMachPort,在另外的线程中使用此port发送消息,则被注册线程会收到相应消息,然后最终在主线程里调用某个回调函数。 可以看到,使用NSMachPort的结果为调用了其它线程的1个函数,而这正...
阅读全文
iOS之keychain Service
摘要:【iOS之Keychain Service】 1、In iOS, each application always has access to its own keychain items; the user is never asked to unlock the keychain. 2、On iPhone, Keychain rights depend on the provisioning profile used to sign your application. Be sure to consistently use the same provisioning profile ac..
阅读全文
iOS之Cookie初级
摘要:[iOS之Cookie初级] 1、需要注意的是一个键值对就是一个Cookie,所以a=val1;b=val2;这是2个cookie。使用 escape()、unescape() 对 value 进行编解码。 2、cookie的值可以由document.cookie直接获得。 3、为了删除一个cook
阅读全文
iOS之Streams
摘要:iOS之Streams Streams提供了与各种设备交换数据的设备无关的一致的方法,它是一个有序的字节流。 除了基于文档的stream外,没有stream可以被寻址。 Stream被创建后,必需被加入Runloop中,因为Stream是异步操作。然后调用open才是真正的读取数据。 NSStream不支持连接到远端主机,只有CFStream才支持。连接到远端的CFStream创建后,可以转换成NSStream来处理。
阅读全文
iOS之判断网络状况
摘要:iOS之判断网络状况 iOS Framework : SystemConfiguration.framework 中,包含了SCNetworkReachability工具,可以帮助监测网络状况,所有定义包含在SCNetworkReachability.h中。 iOS Library的 sample code中,包含Reaqchability工程,里面的Reachability类是对SCNetworkReachability的封装,可实际开发中可以将Reachability添加到自己的工程中拿来直接使用。 Reachability是异步工具机制,把网络状况类型缩小到了3种:NotRea...
阅读全文