[置顶] KVC KVO KVB

摘要: KVC(Key Value Coding)KVO(Key Value Observing)KVB(Key Value Binding)KVO是Cocoa的一个重要机制,他提供了观察某一属性变化的方法,极大的简化了代码。这种观察-被观察模型适用于这样的情况,比方说根据A(数 据类)的某个属性值变化,B(view类)中的某个属性做出相应变化。对于推崇MVC的cocoa而言,kvo应用的地方非常广泛。(这样的机制听起来类 似Notification,但是notification是需要一个发送notification的对象,一般是 notificationCenter,来通知观察者。而kvo是直接通知 阅读全文
posted @ 2014-02-22 22:09 李志斌 阅读(329) 评论(0) 推荐(0) 编辑

[置顶] 深入浅出Cocoa之类与对象

摘要: 最近打算写一些ObjC中比较底层的东西,尤其是 runtime 相关的。苹果已经将 ObjC runtime 代码开源了,我们可以从:http://opensource.apple.com/source/objc4/objc4-493.9/runtime/浏览源代码,或点此下载源代码。从哪里入手呢?那当然是最基本的类与对象。与C++相比,ObjC中的类与对象结构要简洁与一致得多(参考《深度探索C++对象模型》,你就知道C++中类与对象结构的复杂)。本文将详细讲解ObjC中类与对象的结构,下回将讲如何在 runtime 时操作类。我们可以在/usr/include/objc/objc.h 和 r 阅读全文
posted @ 2014-02-22 22:04 李志斌 阅读(200) 评论(0) 推荐(0) 编辑

[置顶] 深入浅出Cocoa 之动态创建类

摘要: 在前文《深入浅出Cocoa之类与对象》一文中,我已经详细介绍了ObjC中的 Class 与 Object 的概念,今天我们来如何在运行时动态创建类。下面这个函数就是应用前面讲到的Class,MetaClass的概念,在运行时动态创建一个类。这个函数来自《Inside Mac OS X-The Objective-C Programming Language》。#import#importBOOLCreateClassDefinition(constchar*name,constchar*superclassName){structobjc_class*meta_class;structobjc 阅读全文
posted @ 2014-02-22 22:03 李志斌 阅读(127) 评论(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 李志斌 阅读(180) 评论(0) 推荐(0) 编辑

[置顶] 苹果推送通知服务(APNs)编程

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

[置顶] Mac svn命令 linux同样适用

摘要: 1、将文件checkout到本地目录svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co2、往版本库中添加新的文件或文件夹svn add file例如:svn add test.php(添加test.php)svn add *.php(添加当前目录下所有的php文件)3、将改动的文件提交到版本库svn commit -m“LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)例如:svn commit -m “a 阅读全文
posted @ 2014-02-22 21:21 李志斌 阅读(279) 评论(0) 推荐(0) 编辑

[置顶] IOS多线程(NSThread,NSOperation,Grand Central Dispatch)

摘要: •NSThread: –优点:NSThread 比其他两个轻量级,使用简单 –缺点:需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒等。线程同步对数据的加锁会有一定的系统开销•NSOperation: –不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上 –NSOperation是面向对象的 - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;•如果要更新UI界面,可以在后台线程中调用performSelectorOnM... 阅读全文
posted @ 2013-12-27 21:50 李志斌 阅读(611) 评论(0) 推荐(1) 编辑

iOS7新特性之二维码生成于读取

摘要: 先导入CoreImage.framework生成二维码读取二维码 阅读全文
posted @ 2014-02-28 21:15 李志斌 阅读(267) 评论(0) 推荐(1) 编辑

Socket即时通讯小实例

摘要: 分层原则1.物理层:主要定义物理设备标准,如网线的接口类型、各种传输介质的传输速率等。主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是常说的数模与模数转换)。这一层的数据叫做比特(bit),主要设备:集线器2.数据链路层:主要将从物理层接收的数据进行MAC地址的封装与解封装。常把这一层的数据叫做帧,主要设备:交换机3.网络层:选择合适的网间路由和交换结点, 确保数据及时传送,将从下层接收到的数据进行IP地址的封装与解封装。常把这一层数据叫做数据包,主要设备:路由器。4.传输层:定义了一些传输数据的协议和端口,如TCP、UDP协议,主要将从下层接收的 阅读全文
posted @ 2014-02-28 20:28 李志斌 阅读(1421) 评论(0) 推荐(0) 编辑

iOS内置加速计(UIAccelerometer/CoreMotion)

摘要: •通过iOS设备提供的内置的加速计,可以确定设备什么时候移动、移动了多少距离以及设备的方向•在应用程序中,使用UIAccelerometer类来接收加速计数据,通过类方法sharedAccelerometer可以获得该类的实例•使用加速计需要设置其更新间隔和代理,此后,在指定的时间间隔,会收到代理方法accelerometer:didAccelerate:的回调•该代理方法收到一个指向加速计的指针和一个指向UIAcceleration对象的指针•该加速对象包含:x,y,z和timestamp四个属性,其中x,y,z是设备在这三个方向上的重力加速度,单位gVt=V0+g * t 加速度是恒定的V 阅读全文
posted @ 2014-02-28 20:16 李志斌 阅读(1536) 评论(0) 推荐(0) 编辑

iOS设计模式----委托模式

摘要: Cocoa Touch框架下使用大量使用委托(delegation),根据苹果公司的文档,delegate是Cocoa Touch框架所采用的委托模式的一种形式。实例代码下载传送门理解委托,所需要的准备(一)协议Objective-C的协议,类似于C++的抽象类,JAVA的接口。其具体定义如下[cpp]view plaincopyprint?@protocolMyButtonDelegate@optional-(void)didPressButton;@end@protocol为协议关键字,MyButtonDelegate为协议名,didPressButton为协议里的方法。(二)id类型id 阅读全文
posted @ 2014-02-23 17:38 李志斌 阅读(234) 评论(0) 推荐(0) 编辑

NSXMLParser详解

摘要: NSXMLParser 实现的是sax方法解析xml文件。dom实现的原理是把整个xml文档一次性读出,放在一个树型结构里。在需要的时候,查找特定节点,然后对节点进行读或写。他的主要优势是实现简单,读写平衡;缺点是比较占内存,因为他要把整个xml文档都读入内存,文件越大,这种缺点就越明显。sax的实现方法和dom不同。他只在xml文档中查找特定条件的内容,并且只提取需要的内容。这样做占用内存小,灵活,正好满足我们的需求。他的缺点就是写,有些资料介绍了写入的方法,但是我感觉这对本例没有必要。运行NSXMLParser涉及设置、运行和响应结果。1)启动NSXMLParser要使用NSXMLPars 阅读全文
posted @ 2014-02-22 22:10 李志斌 阅读(279) 评论(0) 推荐(0) 编辑

Core Foundation 框架

摘要: Core Foundation框架(CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:群体数据类型 (数组、集合等)程序包字符串管理日期和时间管理原始数据块管理偏好管理URL及数据流操作线程和RunLoop端口和soket通讯Core Foundation框架和Foundation框架紧密相关,它们为相同功能提供接口,但Foundation框架提供Objective-C接口。如果您将Foundation对象和Core Foundation类型掺杂使用,则可利用两个框架之间的 “ 阅读全文
posted @ 2014-02-22 22:01 李志斌 阅读(212) 评论(0) 推荐(0) 编辑

UIView和CALayer的区别

摘要: CALayer属于Core Animation部分的内容,比较重要而不太好理解。以下是园子中看到的一篇文章的摘录:以下摘自>:两者最大的区别是,图层不会直接渲染到屏幕上。在模型-视图-控制器(model-view-controller)概念里面NSView和UIView是典型的视图部分,但是在核心动画里面图层是模型部分。图层封装了几何、时间、可视化属性,同时它提供了图层现实的内容,但是实际显示的过程则不是由它来完成。每个可见的图层树由两个相应的树组成:一个是呈现树,一个是渲染树。1. UIView是iOS系统中界面元素的基础,所有的界面元素都是继承自它。它本身完全是由Core Anima 阅读全文
posted @ 2014-02-22 22:00 李志斌 阅读(257) 评论(0) 推荐(0) 编辑