ARC中的新规则

摘要: 为了ARC能顺利工作,特增加如下规则,这些规则可能是为了更健壮的内存管理,也有可能为了更好的使用体验,也有可能是简化代码的编写,不论如何,请不要违反下面的规则,如果违反,将会得到一个编译期错误。下面的这些函数:dealloc,retain,release,retainCount,autorelease。禁止任何形式调用和实现(dealloc可能会被实现),包括使用@selector(retain),@selector(release)等的隐含调用。你可能会实现一个和内存管理没有关系的dealloc,譬如只是为了调用[systemClassInstance setDelegate:nil],但是 阅读全文
posted @ 2014-02-22 21:59 李志斌 阅读(268) 评论(0) 推荐(0) 编辑

objective-c block 详解

摘要: BlockApple 在C, Objective-C, C++加上Block這個延申用法。目前只有Mac 10.6 和iOS 4有支援。Block是由一堆可執行的程式組成,也可以稱做沒有名字的Function (Anonymous function)。如果是Mac 10.6 或 iOS 4.0 之前的平台可以利用 http://code.google.com/p/plblocks/ 這個project得以支援Block語法。Apple有一個叫做GCD(Grand Central Dispach)的新功能,用在同步處理(concurrency)的環境下有更好的效率。Block語法產生的動機就是來 阅读全文
posted @ 2014-02-22 21:58 李志斌 阅读(182) 评论(0) 推荐(0) 编辑

iOS Block学习

摘要: iOS4已经直接支持blocks,很有必要学习一下。在ios,blocks是对象,它封装了一段代码,这段代码可以在任何时候执行。Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:blocks是inline的,并且它对局部变量是只读的。Blocks的定义: int (^myBlock) (int a,int b) = ^(int a,int b){ return a+b; }; 定义了一个名为myBlock的blocks对象,它带有两个int参数,返回int。等式右边就是blocks的具体实现,是不是有点像方法的定义?... 阅读全文
posted @ 2014-02-22 21:57 李志斌 阅读(181) 评论(0) 推荐(0) 编辑

苹果推送通知服务(APNs)编程

摘要: iPhone 对于应用程序在后台运行有诸多限制(除非你越狱)。因此,当用户切换到其他程序后,原先的程序无法保持运行状态。对于那些需要保持持续连接状态的应用程序(比如社区网络应用),将不能收到实时的信息。为解决这一限制,苹果推出了APNs(苹果推送通知服务)。APNs 允许设备与苹果的推送通知服务器保持常连接状态。当你想发送一个推送通知给某个用户的iPhone上的应用程序时,你可以使用 APNs 发送一个推送消息给目标设备上已安装的某个应用程序。本文中,你将学到创建使用 APNs 的iOS 应用的详细步骤。创建证书请求使用APNs 的第一步是生成一个证书请求,使用该证书请求来申请一个用于开发的 阅读全文
posted @ 2014-02-22 21:56 李志斌 阅读(519) 评论(0) 推荐(0) 编辑

iOS之线程间通信

摘要: Cocoa为iOS线程间通信提供2种方式,1种是performSelector,另1种是Port。 先说第1种,performSelector,有以下几种:第2种为NSMachPort方式。NSPort有3个子类,NSSocketPort、NSMessagePort、NSMachPort,但在iOS下只有NSMachPort可用。 使用的方式为接收线程中注册NSMachPort,在另外的线程中使用此port发送消息,则被注册线程会收到相应消息,然后最终在主线程里调用某个回调函数。 可以看到,使用NSMachPort的结果为调用了其它线程的1个函数,而这正是performSelector所... 阅读全文
posted @ 2014-02-22 21:41 李志斌 阅读(316) 评论(0) 推荐(0) 编辑

优化UITableView性能

摘要: 在iOS应用中,UITableView应该是使用率最高的视图之一了。iPod、时钟、日历、备忘录、Mail、天气、照片、电话、短信、Safari、App Store、iTunes、Game Center⋯几乎所有自带的应用中都能看到它的身影,可见它的重要性。然而在使用第三方应用时,却经常遇到性能上的问题,普遍表现在滚动时比较卡,特别是table cell中包含图片的情况时。实际上只要针对性地优化一下,这种问题就不会有了。有兴趣的可以看看LazyTableImages这个官方的例子程序,虽然也要从网上下载图片并显示,但滚动时丝毫不卡。下面就说说我对UITableView的了解。不过由于我也是初学 阅读全文
posted @ 2014-02-22 21:35 李志斌 阅读(253) 评论(0) 推荐(0) 编辑

GCD的一些小应用

摘要: >>>>>>>>iOS中的多线程有以下几个办法1.performSelector(InBackground or MainThread)这个方法比较方便,但是问题在于参数传递只能支持一个对象(传多个参数,我是将其打包在一个NSDictionary里面)2.NSOperationQueue这个方法稍微复杂,提供了每个任务的封装(NSOperation)。可以继承NSOperation之后,在main函数中写一些同步执行的代码,然后放到一个Queue之中,Queue自动管理Operation的执行和调度(在UI线程以外)。对于异步执行的代码,需要重载 阅读全文
posted @ 2014-02-22 21:34 李志斌 阅读(213) 评论(0) 推荐(0) 编辑

iOS中后台运行

摘要: iOS在升级到4.0以后就支持了多任务了。下文将详细介绍一下这个特性。1、检查设备是否支持多任务Apple出于性能的考虑,并不是所有的iOS设备升级到iOS4以后都支持多任务,比如iPhone 3G。如果你的应用在没有多任务特性时会出问题,为了保持应用的健壮性,你应该对此进行判断并处理。你可以通过调用UIDevice对象的multitaskingSupported属性来获取当前设备是否支持多任务。if(![UIDevice currentDevice].multitaskingSupported){//不支持多任务时应做的处理}2、基本多任务特性通常,当用户按一下Home键,当前应用就会被进入 阅读全文
posted @ 2014-02-22 21:32 李志斌 阅读(247) 评论(0) 推荐(0) 编辑

iOS IM开发的一些开源、框架和教程等资料

摘要: 下面收集了开发即时通讯工具,如AIM、ICQ(Oscar 协议)以及Jabber(XMPP协议)的iOS客户端程序的一些开源,可以直接使用或者参考:Oscar协议开发库LibOrange:https://github.com/unixpickle/LibOrange基于LibOrange库开啊的AIM/ICQ消息通讯工具:https://github.com/chrisballinger/Off-the-Record-iOSXMPP协议Objective-C框架:http://code.google.com/p/xmppframework/一些开发教程:如何开发Jabber iOS客户端:ht 阅读全文
posted @ 2014-02-22 21:31 李志斌 阅读(318) 评论(0) 推荐(0) 编辑

iPhone上的数据存储,sqlite3---第三方框架FMDB

摘要: 在iPhone上是采用sqlite进行数据存储是我一种比较习惯性的做法。一般在其他平台也比较习惯用sqlite,比如android。而iphone上有一些封装好的第三方框架提供使用,更节省了许多时间。如:Sqlitepersistentobjects ,FMDB。今天查找了这个两个框架,感觉FMDB的风格更符合我的使用,其实两者是各有优点的,只是看个人喜好而已。FMDatabase和FMResultSet;其中的FMResultSet对象让我想起了android中sqlite的cursor集合啊。FMDB的github地址是,https://github.com/ccgus/fmdb。补充:是 阅读全文
posted @ 2014-02-22 21:24 李志斌 阅读(180) 评论(0) 推荐(0) 编辑