摘要: 5.UITableViewCell性能优化1> 定义一个循环利用标识static NSString *ID = @"C1";2> 从缓存池中取出可循环利用的cellUITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];3> 如果缓存池中没有可循环利用的cellif (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentif 阅读全文
posted @ 2014-03-24 22:58 嘟嘟夜未央 阅读(195) 评论(0) 推荐(0) 编辑
摘要: http://magicalboy.com/kvc_and_kvo/KVC 与 KVO 是 Objective C 的关键概念,个人认为必须理解的东西,下面是实例讲解。Key-Value Coding (KVC)KVC,即是指NSKeyValueCoding,一个非正式的 Protocol,提供一种机制来间接访问对象的属性。KVO 就是基于 KVC 实现的关键技术之一。一个对象拥有某些属性。比如说,一个 Person 对象有一个 name 和一个 address 属性。以 KVC 说法,Person 对象分别有一个 value 对应他的 name 和 address 的 key。 key 只是 阅读全文
posted @ 2014-03-24 09:42 嘟嘟夜未央 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 很多时候我们需要扩展一下现有的类,增加一点功能。如果有源码,修改一下即可,如果是第三方的库,就要麻烦一些。在C++中我们使用类继承的方法来实现,在ObjectiveC中当然也可以这么做,不过ObjectiveC还提供的一种简单实用的方法,就是category,对于一些很微小的功能增加,或者就是增加一个方法方便使用,用category是最轻量级的。 xCode中已经提供了增加category的引导,比如我们想增加以下UILabel的内容竖直对齐的方法,那么就需要如下进行一定的设置: 生成的文件名字是UILabel+VAlign.h/m,虽然不是必须是这样的,但往往约定俗成是类名+... 阅读全文
posted @ 2014-02-22 10:46 嘟嘟夜未央 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 我们经常会遇到在一个应用里面呼出另一个应用的需求,比如在文档里面点击地址,调用safari来打开网页;比如在文件浏览器里面点击某种文件,自动激活一个应用来打开文件。 iOS里面对于这样的需求使用URL来实现,把其他的应用看成一种资源,本质上就是调用系统资源。 我们有两个应用App1和App2,在App2里面呼出App1,那么首先要配置App1,让系统认识App1的URL,这个就是配置info.plist文件的某些项,在Xcode里面就是配置一些选项,在Xcode4.6.2里面的样子如下图: 这样就设置好了相关项,Identifier需要保持每个应用不同,所以推荐... 阅读全文
posted @ 2014-02-07 17:48 嘟嘟夜未央 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 在2011的WWDC上,苹果推出了GCD,从此多线程增加了一种新的方法。GCD要求运行在iOS4.0版本以上或者OS X10.6版本以上。GCD是Grand Central Dispatch的缩写,是一组用于实现并发编程的C接口。GCD是基于Objective-C的Block的特性开发的,基本的业务逻辑和NSOperation很像。都是添加一个任务到一个队列,由系统来负责线程的生成和调度。因为直接使用Block,所以使用起来很是方便,降低了多线程开发的门槛。 还是先看一下代码,和多线程系列(1)里面同一个例子,用GCD实现如下:- (void)viewDidLoad{ [s... 阅读全文
posted @ 2014-02-03 23:23 嘟嘟夜未央 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 前面了iOS的NSThread方法来实现多线程,这篇就简单的讲讲NSOperation和NSOperationQueue。 NSOperation是一个抽象类,定义一个要执行的任务。NSOperationQueue是一个任务队列,帮助对NSOperation所定义的任务进行管理。当任务加入到任务队列后,会自动按照优先级和依赖关系自动运行。 NSOperation是不能直接使用的,我们必须使用继承类。iOS提供了两个实现好的子类,分别是NSInvocationOperation和NSBlockOperation。NSOperation有个start方法,给你提供了一种不加入NSO... 阅读全文
posted @ 2014-01-29 21:33 嘟嘟夜未央 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 多线程这个概念的接触是蛮早的时候了,当时还是单核单CPU的时候,Thread这个概念已经出现了,当时比较流行的方案是时间片轮流,线程可以优先级抢占,但一次只能运行一个线程,实际上多线程是不能真正并行处理的,只是宏观上表现的多线程在齐头并进。现在硬件进步了很多,多核的CPU时代来临了,于是线程开始了真正意义上的并行处理,多线程也作为越来越重要的一个部分需要掌握。 iOS中关于线程的创建和运行,提供了3种方法:NSThread,NSOperation和GCD。这三种方式抽象程度越来越高,所以编写代码是越来越简单的。 我们先来看NSThread吧。 NSThread比其他两... 阅读全文
posted @ 2014-01-28 11:44 嘟嘟夜未央 阅读(344) 评论(0) 推荐(0) 编辑
摘要: //// RootViewController.m// MyTimerDemo//// Created by huluo on 1/21/14.// Copyright (c) 2014 bluemobi.cn. All rights reserved.//#import "RootViewController.h"@interface RootViewController ()@end@implementation RootViewController{ UITableView *timerTableView; NSMutableArray *timeArr; ... 阅读全文
posted @ 2014-01-22 17:57 嘟嘟夜未央 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 为Objective-C编程调试技巧(译)http://www.cocoawithlove.com/2008/10/debugging-tips-for-objective-c.html这篇文章是关于从程序获得额外的信息在运行时。Xcode和GDB都支持广泛的信息获取工具 - 但你需要知道,他们在那里。下面是一些Objective-C的具体gdb的提示和指令,所有的Cocoa程序员应该知道的。说话直接用gdb调试器控制台窗口很聊得来的gdb的方式。从运行菜单(或type命令移-R)显示在Xcode的控制台窗口。您只能发送命令到GDB当程序暂停(停止在断点处)。当你有(GDB)提示,然后你可以跟 阅读全文
posted @ 2014-01-20 23:04 嘟嘟夜未央 阅读(497) 评论(0) 推荐(0) 编辑
摘要: 1、数据类型:CGFloat: 浮点值的基本类型CGPoint: 表示一个二维坐标系中的点CGSize: 表示一个矩形的宽度和高度CGRect: 表示一个矩形的位置和大小typedef float CGFloat;// 32-bittypedef double CGFloat;// 64-bitstruct CGPoint {CGFloat x;CGFloat y;};typedef struct CGPoint CGPoint;struct CGSize {CGFloat width;CGFloat height;};typedef struct CGSize CGSize;struct C 阅读全文
posted @ 2014-01-20 16:12 嘟嘟夜未央 阅读(236) 评论(0) 推荐(0) 编辑