
Objective-c
每天进步一..
AL, IGCSE, IFD Computer Science teacher
展开
-
编程笔记(Objective-c:委托与通知)
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping委托(Delegation)委托是一种设计模式。这种模式虽然简单但是功能强大。委托就是程序中的一个对象代替别的对象来完成某些任务,或者是和别的对象一起协调来完成某些工作。其中,委托者持有对被委托者的引用,并在适当的时间发送消息给被委托者。通过这个消息委托者通知被委托者自己将要处理或者是已经处理了某种事件翻译 2012-03-12 15:59:51 · 2412 阅读 · 0 评论 -
Objective-C 编程语言(8)快速枚举
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping快速枚举 快速枚举的特性使得我们可以使用简洁的语法来安全、有效地枚举集合中的内容。for...in 快速枚举的特性使得我们可以对集合中的元素进行枚举。其用法如下: for ( 类型 变量 in 表达式 ) { 处理语句 }翻译 2012-06-01 15:14:50 · 5555 阅读 · 0 评论 -
Objective-C 编程语言(6)类别与扩展----类别的使用
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping类别的使用 类别的使用有如下几种方式: ● 扩展由别人实现的类例如,我们可以通过类别来为Cocoa框架中的类增加新的方法。这些新增加的方法会被这个类的所有派生类继承,在运行时和原有的方法是没有任何区别的。 ● 作为派生类的一种代替方式和通过派生的方式来为类增翻译 2012-04-22 21:11:22 · 1504 阅读 · 0 评论 -
Objective-C 编程语言(6)类别与扩展----为类增加方法
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping类别与扩展 类别使得我们可以为既存的类增加新的方法,甚至是为那些自己都没有源代码的类增加新的方法。因此类别是一种不用继承就可以扩展类的功能的机制。使用类别还可以使得我们把类的实现分散到多个文件中。扩展与类别有些类似。但是扩展使得我们可以在@interface代码块之外为类声明必要的API接口。翻译 2012-04-22 21:00:16 · 1297 阅读 · 0 评论 -
Objective-C 编程语言(6)类别与扩展----对根类使用类别,扩展
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping对根类使用类别 我们可以使用类别来为任何的类增加方法,这也就包括根类。为NSObject类增加的方法对于代码中的任何类都是可用的。这种方法在某些情况下是很有用的,但同时这样做也是很危险的。尽管,通过使用类别对类所做的修改看起来是很容易理解并且其影响貌似也是有限的,但是继承机制却极大地扩大了这种修改翻译 2012-05-31 09:48:49 · 1847 阅读 · 0 评论 -
Objective-C 编程语言(5)属性----运行时的区别
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping运行时的区别 总体来说,属性的行为在新的运行时系统和老的运行时系统上是一致的。但是有一个区别:现代的运行时系统支持自动变量绑定;而老的运行时系统则不支持。 在老的运行时系统中,我们必须为属性提供一个相同名称、相同类型的实例变量来进行自动绑定;或者是手动地为属性绑定既存的实例变量。而在现代运行翻译 2012-04-09 22:44:52 · 1181 阅读 · 0 评论 -
Objective-C 编程语言(5)属性----性能与多线程
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping性能与多线程 如果自己实现属性的访问方法,我们就必须考虑性能和多线程的问题。 如果使用@synthesize指令有编译器自动生成属性的访问方法,那么生成访问方法取决于声明属性(Property)是指定的属性(Attributes)。与性能和线程有关的属性有retain,assign,copy翻译 2012-04-09 22:41:38 · 1407 阅读 · 0 评论 -
Objective-C 编程语言(5)属性----属性的声明与实现
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping属性的声明与实现 属性的使用包含两点:属性的声明和实现。 属性的声明 属性的声明以关键字@property开始。该关键字可以出现在类的接口定义@interface中的方法列表中的任何地方。同时,@property还可以在协议或者是类别的声明中出现。 @property(at翻译 2012-04-05 23:10:50 · 3465 阅读 · 2 评论 -
Objective-C 编程语言(5)属性----属性与继承
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping属性与继承 我们可以在派生类中通过属性的重新声明来把只读的属性变为可写的。例如,在下面的程序中,我们定义了类MyInteger。他有一个只读的属性value:@interface MyInteger :NSObject{ NSInteger value;}@prope翻译 2012-04-09 22:37:33 · 2521 阅读 · 0 评论 -
Objective-C 编程语言(5)属性----概述
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping属性 Objective-C中的属性是一种简单的声明和实现对象的访问方法的机制。 概述 关于属性主要有两个方面:我们用于声明属性的句法和在“点号运算符”小节中描述的相关句法。 通常我们使用过一对方法方法(getter和setter)来方法对象的属性的。这翻译 2012-04-05 23:05:54 · 1236 阅读 · 0 评论 -
Objective-C 编程语言(7)关联
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping关联 关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。 关联特性只有在Mac OS X V10.6以及以后的版本上才是可用的。在类的定义之外为类增加额外的存储空间 使用关联,我们可以不用修改类的定义而为其对象增加存储空间。这在我们无法访问到类翻译 2012-05-31 13:55:24 · 7625 阅读 · 4 评论 -
Objective-C 编程语言(10)选择器----方法和选择器、运行时发送可变消息
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping选择器 在Objective-C中,选择器(selector)有两个意思。 一是指在代码中的方法的名称。二是指在编译是用于替换方法名称的唯一的标识符。编译后的选择器的为SEL类型。所有名称相同的方法拥有同一个选择器。通过使用选择器可以调用对象的一个方法。这是Cocoa中目标-动作这一模式能得以实现翻译 2012-06-28 16:01:38 · 4812 阅读 · 0 评论 -
Objective-C 编程语言(10)选择器----"目标-动作"设计模式、避免发送消息时出错
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping目标-动作设计模式 应用程序套件中的UI控件就很好地用到了上述的消息和接收者都可以动态变化的特性。 NSControl类的对象都是可用于触发应用程序指令的图形设备。其中,大多数都类似于现实生活中的东西。比如按钮,开关,旋钮,文本框,拨号盘,菜单项等等。在软件中,这些设备是处在用户和应用程序之翻译 2012-07-03 17:05:51 · 3482 阅读 · 0 评论 -
Objective-C 编程语言(12)线程
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping线程Objective-C除了提供异常处理机制外,还提供了线程同步功能。异常处理在前面的“异常处理”章节有介绍。 线程的同步执行Objective-C支持程序中的多线程。这就意味着两个线程有可能同时修改同一个对象,这将在程序中导致严重的问题。为了避免这种多个线程同时执行同一段代码的情况,翻译 2012-07-22 11:01:15 · 3381 阅读 · 0 评论 -
Objective-C 编程语言(13)远程消息---分布式对象
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping远程消息和其他语言一样,Objective-C语言最初设的设计也是针对在同一地址空间中执行的单一进程而设计的。 然而,在面向对象的模型中,通信是运行时在相对自我包含的单元之间通过消息的方式来进行的。这种方式看起来很适合进程间的通讯。因此,不同地址空间中的对象互发消息或者是执行同一任务的不同线程之间互翻译 2012-07-29 11:12:07 · 2683 阅读 · 0 评论 -
Objective-C 编程语言(13)远程消息---Obj-C 对远程消息的支持(指针参数、代理和拷贝)
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping指针参数接下来,我们讨论需要指针作为参数的方法。程序中是可以通过使用对指针的引用来传递消息。当调用时,对应的方法会查看传入的地址中的具体数值。-setTune: (struct tune *)aSong{ Tune= * aSong; …}同样地,指针也可以被用来返回信息翻译 2012-08-05 15:56:56 · 2607 阅读 · 0 评论 -
Objective-C 编程语言(13)远程消息---Obj-C 对远程消息的支持(同步异步消息)
转载请标明出处:http://blog.youkuaiyun.com/zhangxingpingObjective-C语言对远程消息的支持远程消息不仅会给程序设计带来一些很有意思的情况,同时也为Objective-C语言引入了一下很有意思的问题。其中的大多数问题都是和远程消息的效率有关的,以及在两个任交互时应该保持相对独立的程序相关。 在Objective-C中定义了6种类型的修饰符,可用于修翻译 2012-08-04 15:15:03 · 2840 阅读 · 0 评论 -
Objective-C 编程语言(5)属性----属性的使用
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping属性的使用 属性的使用限制 任何Objective-C中的类,核心基本数据类型(Core Foundation data type)或者叫做基本数据类型(POD)都可用于属性。更多“核心基本数据类型”的使用限制请参阅“核心基础”章节。 属性的重声明 我们可以在派生类中对属翻译 2012-04-09 22:26:08 · 3167 阅读 · 3 评论 -
Objective-C 编程语言(11)异常处理----捕获多种类型的异常、抛出异常
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping捕获多种类型的异常在@try()代码块后面紧跟一个或者是多个@catch即可捕获@try()代码块中抛出的异常。其中在有多个@catch()代码块的时候,应该按照异常的明确程度从高到底的顺序进行排列。因此我们可以对异常进行分组处理,如列表11-1所示:@try{ ….}@catch(C翻译 2012-07-21 10:17:19 · 3650 阅读 · 0 评论 -
Objective-C 编程语言(11)异常处理----使能异常处理、异常处理
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping异常处理 Objective-C的异常处理语法和Java以及C++中的有些类似。通常在程序需要使用到NSException或者是NSError或者是自定义的类来增加程序处理错误的能力。本章中将对异常处理进行概括的叙述,更多信息请参考《Cocoa中的异常处理》 使能异常处理Objective-翻译 2012-07-16 19:12:24 · 1898 阅读 · 0 评论 -
Objective-C 编程语言(9)使能静态行为----类型检查、返回值和参数的类型、将派生类静态地转换为基类类型
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping类型检查 前面说到静态类型提供了更多的关于对象的信息,因此编译器可以在以下两种情形下进行更好的类型检查: • 向一个静态类型的对象发送消息时,编译器可以确保接收者是可以响应该消息的。如果接收者不能访问消息中指定的方法,编译器会报告警告。 • 当把一个静态类型的翻译 2012-06-27 12:05:05 · 4366 阅读 · 0 评论 -
Objective-C 编程语言(9)使能静态行为----缺省的动态行为、静态类型
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping使能静态行为 本章节将介绍静态类型是如何工作的,并讨论Objective-c中的其它一些特性,其中就包括如何暂时规避Objecitve-C固有的动态特性。 缺省的动态行为 缺省情况下,Objective-C中的对象都是动态的实体。关于这些动态实体的任何决策都被从编译时推迟到翻译 2012-06-26 22:25:58 · 1862 阅读 · 2 评论 -
Objective-C 编程语言(4) 协议---类型检查,协议遵守协议,引用别的协议
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping类型检查 对象的类型声明可以被扩展到正式的协议。这样协议从另外的层面为编译器提供了进行类型检查的依据。这个层面更加抽象,因为他不涉及具体的实现。 在类型声明的时候,协议名称位于类型名称后面的尖括号中。如: - (id )formattingService; id a翻译 2012-01-19 11:23:34 · 1331 阅读 · 0 评论 -
编程笔记(Objective-c:MVC模式)
转载请标明出处:http://blog.youkuaiyun.com/zhangxingpingMVC模式模型-视图-控制器这种设计模式为程序中的对象分配了三种角色,即模型,视图和控制器。这种模式不仅定义了对象的角色,同时也定义了这些对象的交互方式。这种角色的对象通过抽象的边界相互独立,同时也通过这种边界相互交互。程序中的MVC类型的对象集合有时候也会被称为是某层的(layer),比如说模翻译 2012-03-20 10:46:05 · 4976 阅读 · 0 评论 -
Objective-C 编程语言(3) 定义类---把对象的分配和初始化进行合并
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping把对象的分配和初始化进行合并 在Cocoa中,一些类中定义了把对象分配和初始化合并在一起的方法。这些方法通常被称为“便捷的的构造方法”。他们通常的形式为: +类名...。例如,NSString类就有这样的方法: +(id) stringWithCString:(const char *)翻译 2012-01-10 10:56:10 · 1592 阅读 · 0 评论 -
Objective-C 编程语言(3) 定义类--- 向self和super发送消息
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping向self以及super发送消息 Objectivec-C中提供了两个关键字self和super。在类的方法中我们可以使用这两关键字来指明消息的接收者。 假设,我们定义了一个reposition方法用于修改其作用对象的坐标。这个方法中调用了setOrigin::方法来完成这个功能。所需要翻译 2011-12-29 17:02:06 · 2272 阅读 · 1 评论 -
Objective-C 编程语言(4)协议---非继承关系上的相似性,正式的协议,非正式的协议
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping非继承关系上的相似性 如果多个类(两个或者以上)实现了相同的一套方法,那么这些类通常被划分到声明了这些共有方法的抽象类的下面,作为其派生类。不相关的类大多数情况下是不会实现有相似性的方法的。相反,有一定的相似性也不能成为两个类之间必须有继承关系的理由。例如,在程序中我们可能需要对象来表示XML文件翻译 2012-01-13 15:00:34 · 1654 阅读 · 0 评论 -
Objective-C 编程语言(2) 类,对象,消息 --- 类(5)检查两个类对象是否相等
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping 检查两个类对象是否相等 我们可以直接比较指针是否相等来检查两个类对象是否相等。重要的一点是获取正确的类。Cocoa 框架中提供了好几种特性可以动态地,透明地对即存的类进行派生,以便扩展他们的功能(例如,key-value Observing (KVO,关键字-值与观察机制)以及Core翻译 2011-12-16 14:10:24 · 1486 阅读 · 0 评论 -
Objective-C 编程语言(4) 协议---协议对象,采纳协议,遵守协议
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping协议对象 正如在运行时类对象代表类,选择器(selector)代表方法一样,正式的协议是通过一个特殊的数据类型来表示的,那就是协议类。需要处理协议的代码中必须使用协议对象来代表协议。 协议和类的定义有很多相似之处。他们中都声明了方法,在运行时都是由对象来表示的,其中类是由类对象来表示的,翻译 2012-01-13 15:05:58 · 2009 阅读 · 0 评论 -
编程笔记(objective-c :关于属性)
转载请标明出处:blog.youkuaiyun.com/zhangxingping关于属性 在C++中,通常需要编写Getter和Setter方法来获取或者是设置实例变量的值。这两种方法需要在程序中显示的完成。这种方式在Objective-C中也是适用的。但是Objective-C提供了一种更为便捷的方式来完成这种功能。它就是属性。和C++中的显示的Getter和Setter方法相比,属原创 2011-10-09 19:47:52 · 5182 阅读 · 0 评论 -
编程笔记(objective-c :声明属性)
转载请标明出处:blog.youkuaiyun.com/zhangxingping属性的声明 属性的声明使用关键字@property。属性的声明可以是在@interface类中的方法声明块的任何地方。@property同样也可以在protocal(协议)和category(种类)中。其通用形式如下:@property ( attributes) type name 由于英文pro原创 2011-10-09 19:51:19 · 3855 阅读 · 0 评论 -
编程笔记(Objective-c:属性的实现)
转载请标明出处:blog.youkuaiyun.com/zhangxingping 前面的示例程序中已经看到了使用@synthesize关键字来告诉编译器自动生成属性的getter和setter方法。也就是说如果我们没有显示地在@implementation代码块中实现属性的getter和setter方法,编译器会自动根据property的attributes来生成相应的getter和sette原创 2011-10-13 22:01:03 · 2708 阅读 · 0 评论 -
Objective-C 编程语言(2) 类,对象,消息 --- 类(3)类对象
转载请标明出处:blog.youkuaiyun.com/zhangxingping 类对象 类的定义中包含有各种各样的信息,其中大多数都是关于类的实例的: ● 类的名称及其超类的名称 ● 用于描述实例的一组变量的模版 ● 方法名称,返回值及其参数 ● 方法的实现 这些信息被编译器重新编码成在运行时系统可以识别的数据结构。编译器只用创建一翻译 2011-12-06 10:59:24 · 1008 阅读 · 0 评论 -
Objective-C 编程语言(2) 类,对象,消息 --- 类(4)类名称的用法
转载请标明出处:blog.youkuaiyun.com/zhangxingping 类名称的用法 在代码中类名称的使用只有两种情况:作为一种数据类型和作为一个对象。 ● 类名称可以被用来作为类型名,标明对象的类型。例如: Rectangle *anObject; 这里,anObject被静态地声明为是指向一个Rectangle类的对象的指针。翻译 2011-12-13 16:38:41 · 1735 阅读 · 0 评论 -
Objective-C 编程语言(3) 定义类--- 源文件,类的接口
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping类的定义 面向对象程序代中的很多代码都是为新对象而编写的,也就是定义类的。在Objective-C中,类的定义由两部分构成: ● 第一部分就是:interface,即接口,用于声明类的方法,实例变量及其超类的名称。 ● 第二部分就是:implementation,即实现翻译 2011-12-19 17:48:18 · 2947 阅读 · 0 评论 -
Objective-C 编程语言(3) 定义类---分配并初始化对象,init方法的返回值,初始化方法的实现
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping分配并初始化对象分配并初始化对象 在Objective-C中创建一个对象需要两步: ● 为新的对象分配空间 ● 对分配的空间进行初始化 在没有完成上述两个步骤之前,对象是不能用的。上述的两个步骤是分别通过不同的方法来完成的,但是通常是在一行代码中进行的:翻译 2012-01-05 11:09:39 · 5739 阅读 · 1 评论 -
Objective-C 编程语言(3) 定义类--- 类的实现
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping类的实现 类的定义在结构上和类的声明很相似。类的定义以@implementation命令字开始,以@end命令字结束: @implementation 类名称:超类名称 { 实例变量声明 } 方法实现 @end 需要说明的一点是,翻译 2011-12-26 13:20:05 · 2671 阅读 · 0 评论 -
编程笔记(Objective-c:委托与通知示例程序)
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping一个简单的委托与通知的示例程序。其中主程序如下:#import #import "MyDelegate.h"#import "MyNotificationObserver.h"#import "MyClass.h"NSString * notificationName = @"A notific原创 2012-03-19 22:37:53 · 3497 阅读 · 0 评论 -
Objective-C 初学者指南
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping Translations: English | Chinese | KoreanOutline目录Getting Started开始Downloading this tutorial下载本教程Setting up the environment搭建环境Preamble序Ma翻译 2011-07-05 00:14:43 · 7850 阅读 · 0 评论 -
Objective-C 编程语言(2) 类,对象,消息 --- 类(1)继承
转载请标明出处:http://blog.youkuaiyun.com/zhangxingping类 面向对象的程序通常都是有各种各样的对象构成的。基于Cocoa框架的程序可能用到了NSMatrix对象,NSWindow对象,NSDictionary对象,NSFont对象,NSText对象以及其他的许多种类的对象。程序中通常也是使用某个类的多个对象,而不是一个。比如,多个NSArray翻译 2011-11-24 15:47:37 · 1694 阅读 · 0 评论