02 2013 档案

摘要:表视图是iOS开发中使用最频繁的视图,我们一般都会选择以表的形式来展现数据,比如通讯录、频道列表等。表视图分段、分组、索引等功能使我们所展 示的数据看起来更规整更有调理,更令人兴奋的是表视图还可以利用细节展示等功能多层次的展示数据,正所谓一表胜千言。 不过,相较于其它控件表视图的使用比较复杂,但是对比于表视图各种灵活多变的功能,我们在使用上花费的努力还是相当值得的。简单表视图表视图的形式灵活多变,本着由浅入深的原则,我们先从简单表视图开始学习。本节讲的简单表视图是动态表,(iOS 5之前全部是动态表没有动态表和静态表区别)。创建简单表视图在iOS 5之后我们可以使用xib或者故事板技术创建表视 阅读全文
posted @ 2013-02-27 16:27 智捷iOS课堂 阅读(776) 评论(0) 推荐(0) 编辑
摘要:书接上回,应用案例我们以UITextFieldDelegate为例来说明一下委托的使用。 UITextFieldDelegate是控件UITextField的 委托,控件的委托主要负责响应控件事件或控制其他对象。除了UITextField,WebView、UITableView等控件也有相应的委托对象。打开UITextFieldDelegate的API文档,其中有4个有关编辑的方法,还要3个其它方法。这里我们在编辑过程中消息的发送,UITextField编辑过程中与UITextFieldDelegate委托对象之间交互过程。在 文本框编辑开始前后会发出消息textFieldShouldBegi 阅读全文
posted @ 2013-02-25 10:01 智捷iOS课堂 阅读(783) 评论(0) 推荐(0) 编辑
摘要:对于iOS开发,举例Cocoa框架下的几个设计模式为大家分析。当然,Cocoa框架下关于设计模式的内容远远不止这些,我们选择了常用的几种:单例模式、委托模式、观察者模式、MVC模式。委托模式委托模式从GoF 设计装饰(Decorator)、适配器(Adapter)和模板方法(Template Method)等模式演变而来。几乎每一个应用都会或多或少地使用到委托模式。不只是CocoaTouch框架,在Cocoa框架中委托模式也得到了广泛的应用。问题提出对于应用生命周期的非运行状态——应用启动场景,我们把从点击图标到第一个画面启动的过程细化了一下假设上图这一系列的处理,都是在一个上帝类UIAppl 阅读全文
posted @ 2013-02-21 17:00 智捷iOS课堂 阅读(867) 评论(2) 推荐(1) 编辑
摘要:故事板是苹果在iOS5之后推出的技术,本意是集成多个nib文件于一个故事板文件,管理起来方便,故事板还能反应控制器之间的导航关系,很多导航是需要连连线就可以了,不需写代码,使用起来很方便。但是我告诫读者,从内存占用角度看故事板不是一个好的技术。为了比较我们使用Xcode中的Master-Detail模板分别创建,基于故事板的应用StoryboardDemo和基于nib的应用 NibDemo。然后通过Instruments工具的Allocations模板分析ViewController视图控制器加载的时候,内存占用方面 有多少差别。NibDemo工程的Allocations模板跟踪,Storyb 阅读全文
posted @ 2013-02-15 10:32 智捷iOS课堂 阅读(641) 评论(4) 推荐(0) 编辑
摘要:好的应用应该在系统内存警告情况下释放一些可以重新创建的资源。在iOS中我们可以在应用程序委托对象、视图控制器以及其它类中获得系统内存警告消息。1、应用程序委托对象在应用程序委托对象中接收内存警告消息,需要重写applicationDidReceiveMemoryWarning:方法。AppDelegate的代码片段:- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application{NSLog(@”AppDelegate中调用applicationDidReceiveMemoryWarning:”);}2、视图控制器在 阅读全文
posted @ 2013-02-11 08:23 智捷iOS课堂 阅读(1217) 评论(0) 推荐(1) 编辑
摘要:在MRR中释放对象通过release或autorelease消息实现,release消息会立刻使引用计数-1释放,发送 autorelease消息会使对象放入内存释放池中延迟释放,对象的引用计数并不真正变化,而是向内存释放池中添加一条记录,直到当池被销毁前会通知池 中的所有对象全部发送release消息真正将引用计数减少。由于会使对象延迟释放,除非必须,否则不要使用autorelease释放对象,在iOS程序中默认内存释放池的释放是在程序结束,应用程序入口main.m文件代码如下:int main(int argc, char *argv[]){@autoreleasepool {return 阅读全文
posted @ 2013-02-07 09:12 智捷iOS课堂 阅读(1688) 评论(0) 推荐(1) 编辑
摘要:内存泄漏是当一个对象或变量在使用完成后没有释放掉,那么如果我们走了另外一个极端情况会什么样呢?这就导致过渡释放(over release)问题,从而使对象“僵尸化”,对象称为僵尸(zombies)对象。一个对象已经被释放过了,或者调用者没有这个对象的所有权而释放它, 都会造成过渡释放,产生僵尸对象。僵尸对象或许对很多人听起来很恐怖、也很陌生,如果要说起EXEC_BAD_ACCESS异常,可能大家并不陌生。试图调用僵尸对象方法应用会崩溃(应用直接跳出),并抛出异常EXEC_BAD_ACCESS。我们看看代码ViewController的代码片段:- (void)tableView:(UITabl 阅读全文
posted @ 2013-02-05 14:32 智捷iOS课堂 阅读(1377) 评论(0) 推荐(3) 编辑
摘要:内存泄漏问题的解决内存泄漏(Memory Leaks)是当一个对象或变量在使用完成后没有释放掉,这个对象一直占有着这块内存,直到应用停止。如果这种对象过多内存就会耗尽,其它的应用就无法运行。这个问题在C++、C和Objective-C的MRR中是比较普遍的问题。在Objective-C中释放对象的内存是发送release和autorelease消息,它们都是可以将引用计数减1,当为引用计数为0时候,release消息会使对象立刻释放,autorelease消息会使对象放入内存释放池中延迟释放。上代码:- (void)viewDidLoad{[super viewDidLoad];NSBundl 阅读全文
posted @ 2013-02-01 14:22 智捷iOS课堂 阅读(5420) 评论(2) 推荐(2) 编辑