- 博客(23)
- 资源 (17)
- 收藏
- 关注
原创 iPhone emoji问题牵出的Unicode代理区的思考
emoji 没什么特别的,也是正常的Unicode编码,只是通过代理区实现 这里说的utf-8和utf-16,其实本质上是一样的。只是utf-8是一个直接的映射。而utf-16需要根据代理区的(前导代理,后尾代理)来映射。utf-16比utf-8多了一步而已!话又说回来:如果不是代理区域的出现,就emoji 微笑的unicode: 0X1-F603来说。计算机甚至不知道这是一个字符,还是两个字符!所以,搞了一个Unicode:D83D-DE03来表示unicode: 0X1-F603,防止计算机解码混
2014-08-31 18:51:00 13903 4
原创 iOS多线程中performSelector: 和dispatch_time的不同
我们知道:只有主线程会在创建的时候默认自动运行一个runloop,并且有timer,普通的子线程是没有这些的。这样就带来一个问题了,有些时候我们并不确定我们的模块是不是会异步调用到,而我们在写这样的延时调用的时候一般都不会去检查运行时的环境,这样在子线程中被调用的时候,我们的代码中的延时调用的代码就会一直等待timer的调度,但是实际上在子线程中又没有这样的timer,这样我们的代码就永远不会被调到。
2014-08-28 17:50:45 10426 3
原创 iOS 多线程编程gcd全面系统认识
这两天在看《OC高级编程-多线程编程和内存管理》日本人写的那本,该书对arc,block和gcd有了更深层次的解读,非常不错。现在总结一下gcd相关的知识。有关arc和block的参考arc 参考block 网上很多博客都对gcd有过讲解,很多是对gcd的全局队列,主线程队列,创建队列等等,做了单方面的描述,不是很全面系统。下面我们将学习一下系统得gcd。本文主要分为下面几个要点,前几个好点比较好理解,最后可能理解起来有些费劲!● 什么是gcd,iOS为什么要用多线程● 创建线程,序列线程和
2014-08-27 11:35:42 3288 1
原创 UITableView分组冻结的研究与实现浅析
当我们使用iphone手机通讯录,手机qq的时候。有一个细节大家可能已经忽略,即“分组”控件在向屏幕上方滑动时,超过屏幕的高度,就冻结到屏幕最上端。方便用户确定当前浏览的是哪个分组。当下面的分组上来时候,又会当前冻结的窗口顶上去,它自己又实现冻结!
2014-08-23 22:25:14 1920
原创 iOS 通讯录编程【总结】
1. 监听通讯录变更监听规则:当App活跃(前台+后台保活期间)的时候,当通讯录修改的时候,会收到通知当App不活跃的时候(挂起的时候),App收不到通知;而是,当App到前台的时候收到延迟的通知。
2014-08-22 15:30:00 5255 2
原创 __weak如何实现对象值自动设置为nil的
__weak 修饰符就像我们知道的那样__weak修饰符提供了如同魔法般的功能。● 若使用__weak修饰符的变量引用对象被废弃时,则将nil赋值给该变量● 使用附有__weak修饰符的变量,就是使用注册到autoreleasepool的对象。
2014-08-18 16:56:37 6619 1
原创 【block第四篇】实现
-------------------------------------------欢迎查看block连载博客【专栏】--------------------------------------【block编程第一篇】block语法 【block编程第二篇】block捕获变量和对象;【block编程第三篇】block的内存管理。 【block编程第四篇...
2014-08-16 22:23:13 18639 5
原创 【block第三篇】内存管理——如何验证block在栈上,还是堆上
这就需要引入三个名词:● _NSConcretStackBlock● _NSConcretGlobalBlock● _NSConcretMallocBlock正如它们名字说的那样,说明了block的三种存储方式:栈、全局、堆。【在ARC下】:似乎已经没有栈上的block了,要么是全局的,要么是堆上的。有一个特殊情况:如果仅仅定义了block没有赋值给变量的话,仍是在栈上,比如:【在非ARC下】:存在这栈、全局、堆这三种形式。
2014-08-16 22:21:31 15504 8
原创 拼图算法,将零碎小图,整理到一张大图之上,自动合并。二叉树实现
----------------------------------------------------欢迎查看IM软件业务知识《专栏》-------------------------------------------------------------------使用状态机来保持在线状态 【点击】 拼图算法,将零碎小图,整理到一张大图上【点击】登录导...
2014-08-15 10:53:17 15701 8
原创 单词、字符串儿翻转,栈实现!
对字符串“this is very good”进行翻转,即“good very is this”;思路:1.字符串的翻转的问题,可以使用栈实现。2.先把所有字符翻转,然后对再对某一个单词翻转,最终实现题目要求。
2014-08-12 15:38:52 1690
原创 Effective Objective-C(第47-52条)系统架构,foundation、for-in、NSTimer
第47条:熟悉系统框架 若是不了解系统架构所提供的内容,那么就可能会把其中已经实现的东西再写一遍。将一系列代码封装为动态库(dynamic library),并在其中放入描述其接口的头文件,这样做出来的东西就叫框架。然而iOS应用程序不允许在其中包含动态库。 开发者使用最对的是Foundation框架,像NSObject、NSArray、NSDictionary
2014-08-10 15:13:57 2350
原创 Effective Objective-C(第41-46条)gcd大中枢派发、performSelector
OC中多线程编程的核心就是block与gcd。这虽然是两种不同的技术,但他们是一并引入的。block是一种可在C、C++及OC代码中使用的“词法闭包”(lexical closure),它极为有用,借此机制,开发者可将代码像对象一样传递,令其在不同环境(context)下运行。在block的范围内,它可以访问到其中的全部变量。 gcd是一种与block有关的技术,它提供了对线程的抽象,而这种抽象基于“派发队列”(dispatch queue)。开发者可将block排入队列中,有gcd负责处理所有调度
2014-08-10 15:08:59 1928
原创 Effective Objective-C(第37-40条)block在栈上?在堆上?
OC中多线程编程的核心就是block与gcd。这虽然是两种不同的技术,但他们是一并引入的。block是一种可在C、C++及OC代码中使用的“词法闭包”(lexical closure),它极为有用,借此机制,开发者可将代码像对象一样传递,令其在不同环境(context)下运行。在block的范围内,它可以访问到其中的全部变量。 gcd是一种与block有关的技术,它提供了对线程的抽象,而这种抽象基于“派发队列”(dispatch queue)。开发者可将block排入队列中,有gcd负责处理所有调度
2014-08-10 15:08:45 3925 4
原创 Effective Objective-C(第29-36条)内存管理篇,ARC、循环引用、引用计数
在OC这种面向对象语言里,内存管理是个重要概念。要像用一门语言写出内存使用效率较高且又没有bug的代码,就得掌握内存管理模型的种种细节。一旦理解这些规则,你就会发现,其实OC的内存管理没有那么复杂,再进入ARC之后就更为简单了。
2014-08-10 15:08:08 4005
原创 Effective Objective-C(第23-28条)类别、协议,代理,匿名对象、delegate
对象之间经常需要相互通信,而通信方式有很多。Objective-C开发者广泛使用一种名叫“委托模式”(Delegate Pattern)的编程设计模式来实现对象间的通信,该模式的主旨是:定义一套接口,某对象若想接收另一个对象的委托,则需遵从此接口,以便称为“委托对象”(delegate)。而这“另一个对象”则可以给其委托对象回传一些信息,也可以在发生相关联时间时通知委托对象。
2014-08-10 15:07:21 2694
原创 《Effective Objective-C 2.0》—(第47-52条)—系统架构,foundation、快速遍历for-in、NSTimer
collection使用无缝桥接快速遍历for-in的使用谨慎NSTimer的循环引用
2014-08-10 15:07:15 1027
原创 Effective Objective-C(第15-22条)接口与API设计、深拷贝、浅拷贝
近年来,开源社区与开源组件随着iOS开发而流行起来,我们经常使用别人的代码,别人也会看到你的代码。所以,我们要把代码写得清晰一些
2014-08-10 15:06:55 1917
原创 Effective Objective-C(第11-14条)动态绑定、objc_msgSend、消息转发机制
第11条:理解objc_msgSend的作用 在对象上调用方法是Objective-C中经常使用的功能。用Objective-C术语来说这叫做:“传递消息”(pass a message)。消息有“名称”(name)或者“选择子”(selector),可以接收参数,而且可能还有返回值。 由于Objective-C是C的超集,所以最好理解C语言的函数调用方式。C语言使用“静态绑定
2014-08-10 15:06:27 3859 1
原创 Effective Objective-C(第6-10条)对象、属性、equalToString、关联对象
用Objective-C等面向对象语言编程时,“对象”(object)就是“基本构造单元”(building block),开发者可以通过对象来存储并传递数据。在对象之间传递数据并执行任务的过程就叫做“消息传递”(Messaing)。
2014-08-10 15:04:00 2204
原创 Effective Objective-C(第1-5条)熟悉Objective-C
Objective-C通过一套全新的语法,在C语言基础上添加了面向对象特性。OC的语法中频繁使用方括号,而且不吝于写出极长的方法名,这通常令许多人觉得此语言较为冗长。这是这样写出来的代码非常易读,只是C++和Java程序员不太适应。 OC语言学起来很快,但有很多微妙细节需要注意,而且还有许多容易为人所忽略的特性。另一方面,有些开发者并未完全理解或是容易滥用某些特性,导致写出来的代码难以维护,难以调试。本章讲解基础知识,后续各章语言及其相关架构的各个特定话题。
2014-08-10 15:03:28 2038
转载 对比iOS网络组件:AFNetworking 和 ASIHTTPRequest
在开发iOS应用过程中,如何高效的与服务端API进行数据交换,是一个常见问题。一般开发者都会选择一个第三方的网络组件作为服务,以提高开发效率和稳定性。这些组件把复杂的网络底层操作封装成友好的类和方法,并且加入异常处理等。那么,大家最常用的组件是什么?这些组件是如何提升开发效率和稳定性的?哪一款组件适合自己,是 AFNetworking(AFN)还是 ASIHTTPRequest(ASI)?
2014-08-02 11:00:00 1505
原创 c语言实现tree数据结构
该代码实现了tree的结构,依赖dyArray数据结构。有first一级目录,second二级目录。dyArray的c实现参考这里点击打开链接 hashTable的c实现参考这里点击打开链接下面是跨平台的数据类型定义//// cpPlatform.h// dataStruct//// Created by hherima on 14-7-29.// Copyrigh
2014-08-01 11:23:20 5764
树tree、动态数组dyArray、hashMap、拼图算法
2014-08-15
core-data和sqlite3性能对比demo
2013-06-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人