- 博客(257)
- 资源 (17)
- 收藏
- 关注
原创 探究contentOffset和contentInset,并解决上拉加载更多,uitableview抖动问题
从loading开始,加载更多后,“悄巴蜀”这个cell出来了,但是tableview先向下滑动,在向上滑动,产生了抖动现象。【原因】当loading的时候,contentInset.bottom是172,当loading隐藏的时候contentInset.bottom = 56.这是因为在对tableview的contentInset赋值的时候,contentOffset也会相应改变。contentOffset的变化导致了抖动。下面的log展示了,contentInset和contentOffset相
2015-04-02 01:04:15 20749
转载 iOS开发工具——统计Crash的工具Crashlytics
原文地址:http://tech.ddvip.com/2013-07/1375034417199825.html简介 Crashlytic 成立于2011年,是专门为移动应用开者发提供的保存和分析应用崩溃信息的工具。Crashlytics的使用者包括:支付工具Paypal, 点评应用Yelp, 照片分享应用Path, 团购应用GroupOn等移动应用。 2013年1月,
2015-04-01 14:15:26 1288
原创 iOS 程序进入后台,包括用户上拉快捷菜单导致程序失去活跃的研究
下面是常见的几种程序进入后台,或者失去活跃的操作。1. 点击home键,程序进入后台:先调用 applicationWillResignActive,再调用applicationDidEnterBackground2. 双击home键,程序进图标入任务管理器:只调用applicationWillResignActive。如果你点击别的程序,那么别的程序进入前台,本App调用applicationDidEnterBackground3. 上拉,下拉菜单,程序仍在前台:只调用applicationW
2015-04-01 10:22:02 2321
转载 三目运算符“?:”省略中间操作数的分析
/** Author: Godbach * Blog:http://blog.chinaunix.net/u/33048/index.html* 本文欢迎自由转载,但请标明出处,并保证本文的完整性。*/ 内核代码sch_fifo.c中函数fifo_init的代码如下:static int fifo_init(struct Qdisc *sch, struct rtatt
2015-03-31 19:31:44 7168 2
转载 关于Content-Type的全部类型
Description of Data ContentTypical Filename Extensions MIME type/subtype Text and Text-Related Types HTML text data (RFC 1866)
2015-03-13 16:48:13 5712
原创 iOS类别(Category)与扩展(Extension,匿名类别)
iOS类别(Category)与扩展(Extension,匿名类别) ;包括两者的区别。
2015-03-13 16:06:37 6270 1
转载 各种排序算法的总结和比较
1 快速排序(QuickSort)快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。(1) 如果不多于1个数据,直接返回。(2) 一般选择序列最左边的值作为支点数据。(3) 将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。(4) 对两边利用递归排序数列。快速排序比大部分排序算法
2015-03-09 23:30:23 1002
原创 IM软件客户端,使用状态机来保持在线状态
各个状态步骤说明:1. 启动登录(跟logout相似)2. 登录中。触发条件:手动登录,网络可用通知3. 登录成功4. 登录失败。原因有多种可能是网络5. 密码被改了,本地登录还是使用旧的密码,直接注销6. 因为网络问题掉线了7. 手动或被动注销,被踢。
2015-03-09 16:48:31 3254
转载 instancetype和id类型区别
苹果在iOS 8中全面使用instancetype代替idSteven Fisher:只要一个类返回自身的实例,用instancetype就有好处。@interface Foo:NSObject - (id)initWithBar:(NSInteger)bar; // initializer + (id)fooWithBar:(NSInteger)bar; // convenienc
2015-03-03 23:32:42 1388
转载 iOS关联,objc_getAssociatedObject, objc_setAssociatedObject
关联关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。关联特性只有在Mac OS X V10.6以及以后的版本上才是可用的。在类的定义之外为类增加额外的存储空间 使用关联,我们可以不用修改类的定义而为其对象增加存储空间。这在我们无法访问到类的源码的时候或者是考虑到二进制兼容性的时候是非常有用。 关联是基于关键字的,因此,我们
2015-03-01 21:18:53 4312
转载 Xcode 的正确打开方式——Debugging
程序员日常开发中有大量时间都会花费在 debug 上,从事 iOS 开发不可避免地需要使用 Xcode。这篇博客就主要介绍了 Xcode 中几种能够大幅提升代码调试效率的方式。“If debugging is the process of removing bugs, then programming must be the process of putting them in.”——Ed
2015-02-28 22:14:33 1593
原创 TCP网络传输“粘包”问题,经典解决(附代码)
关于TCP网络传输粘包,网上很多人写了原理。总结起来就一句话(这里拿Server和Client长连接,Server和Client之间通过信令传输做说明)Server发送的时候按照一条条信令发送,到达操作系统网络层,首先进入缓冲池,然后TCP协议层从池子中获取数据,传输给Client。我们知道TCP的传输有几个方案,比如,滑动窗口、1比特方案。所以Client收到的数据已经不可能是一个个完整的信令的。 个人理解TCP粘包的概念:它描述了一个场景:“信令是一个个紧挨着的,好像是被粘在一起了”。
2015-01-20 17:41:49 9255 2
原创 tableview中index对英文字符汉字字符(窄字符宽字符)处理
开发iOS通讯录项目,遇到一个tableview 索引的问题。测试同学发现一个bug:添加一个名字为宽字符A不能归并到索引A的section中,而是使用了添加了一个叫A的索引
2015-01-17 16:23:28 1731
原创 UINavigationController 缺点之一——【sdk缺陷】
在项目开发中遇到下面几个问题:1. 有些viewcontroller是中间界面(或者叫做过渡界面)是不能返回的2. 有时候,想更新一下已经push到navigationController中的viewController。3. 前两个结合的情况。
2014-12-14 17:45:57 1872 1
原创 iOS 修改通讯录联系人地址(address)崩溃原因分析
目前项目中需要对iOS系统通讯录进行读取,修改操作。在进行对地址修改的时候,出现了一个奇怪现象:● 如果contact没有address字段(或者一个全新的contact),对它的address进行修改是可以成功的,● 如果这个人有过address字段,此时对它就行修改就崩溃。控制台打出:*** -[CFString release]: message sent to deallocated instance 0x81d26f0这应该是一个僵尸对象,重复释放某一个对象。首先我对修改通讯录的代码进行
2014-11-29 13:09:13 2771
转载 nil Nil NULL NSNull 之间的区别
nil 是对objective c id 对象赋空值例如 NSString * string = [NSString stringWithFormat:@"test"]; string = nil; 对于objective c 集合类对象 比如数组对象,字典对象,当我们不需要再使用他们的时候,对他们release 的同时最好也把他们赋值为nil,这样确保安全性,下面一个
2014-11-19 10:51:43 1143
原创 使用sqlite3创建数据库表的时候需要注意
使用sqlite3创建数据库表的时候需要注意:1. 不能使用纯数字2. 不能带有"-","@"等字符。也不能以数字打头。
2014-11-01 02:23:04 4110 1
原创 sqlite3 插入数据的时候,返回SQLITE_CONSTRAINT
sqlite3 插入数据的时候,返回SQLITE_CONSTRAINT原因是:数据库的表的名字是纯数字。大改这个原因太诡异了,创建的时候可以创建成功。插入数据的时候就失败,因为表名是纯数字。附上错误的汉语解析
2014-10-30 20:11:39 7575
原创 tableview小结
初学者的问题主要集中在,下面几个问题:一、几个函数总是不被调用:例如:- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;这个代理不被调用的种类很多:1. section的count没有正确2. 没有设置代理3.如果没有设置seciton的高度,仍然
2014-10-27 13:25:21 2246
原创 使用CFStringTransform将汉字转成拼音,非常耗时!
最近做一个通讯录项目,需要将联系人读入app内存(通讯录有400人左右),并依照首字母排序。这里使用了在将汉字转化成拼音的时候,iOS系统自带接口:注意self.latinString需要是一个mutable的string
2014-10-17 16:27:30 4143 1
原创 记事本输入“联通”俩字,关闭再打开乱码
这是个很有意思的事情。这里需要提一下ANSI,不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。然后,这些编码方式没有固定的格式,但是比如说UTF-8的格式是非常明显的,比如最高位是0,110,1110等等。“联”ANSI编码是 0xC1AA 二进制排列是 1100 0001 1010 1010;“通”ANSI编码是 0xCDA8 二进制排列是 1100 1101 1010 1000;
2014-09-25 11:48:38 12736 2
原创 iOS View的Frame和bounds之区别,setbounds使用(深入探究)
bounds的有以下两个特点:1. 它可以修改自己坐标系的原点位置,进而影想到“子view”的显示位置。这个作用更像是移动原点的意思。2. bounds,它可以改变的frame。如果bounds比frame大。那么frame也会跟着变大。这个作用更像边界和大小的意思。可以推测一下,setBound可以用于view的滑动,手势动作。
2014-09-24 14:34:41 12702 4
转载 iPhone 6 图像渲染揭秘
几天前,Apple发布了iPhone 6 Plus. 新的iPhone大幅改变了图像在屏幕上渲染的方式。我们做了一个图表进行详细分析。
2014-09-21 20:34:51 1281
原创 控制台——代码行数统计、删除.svn文件、静态库命令、protocBuf命令
在控制台,cd到你的工程目录下,执行下面命令:find . -name "*.[hm]" -print0 | xargs -0 wc -l结果如下:
2014-09-16 13:57:11 1708
转载 查找算法——二叉树查找
1. 查找树的创建(createTree)假设有如下数组4,1,45,78,345,23,12,3,6,21首先选定4为root,然后遍历剩下的数字,如果大于等于4则放到4的右侧,小于4放到4的左侧,最后构建成的树:所有的左孩子都小于父节点,所有的右孩子都大于等于父节点。如下图:2. 遍历查找树(displayTree)按照左中右的顺序遍历树,结果为:1,3,4
2014-09-15 18:20:49 8434
原创 iOS 容易引起“循环引用”的几种场景
目前总结了一下,在iOS平台容易引起循环引用的几个场景:一、parent-child模式二、block(编译器会提示警告)三、NSTimer
2014-09-10 16:18:07 15052
原创 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 13900 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 5254 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 15700 8
原创 单词、字符串儿翻转,栈实现!
对字符串“this is very good”进行翻转,即“good very is this”;思路:1.字符串的翻转的问题,可以使用栈实现。2.先把所有字符翻转,然后对再对某一个单词翻转,最终实现题目要求。
2014-08-12 15:38:52 1690
树tree、动态数组dyArray、hashMap、拼图算法
2014-08-15
core-data和sqlite3性能对比demo
2013-06-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人