Objective-C
ThomasQiuJS
这个作者很懒,什么都没留下…
展开
-
从 C++ 到 Objective-C(1):前言
<br />作者: DevBean 日期: 2011 年 03 月 18 日<br /> Objective-C 可以算作 Apple 平台上“唯一的”开发语言。很多 Objective-C 的教程往往直接从 Objective-C 开始讲起。不过,在我看来,这样做有时候是不合适的。很多程序员往往已经掌握了另外一种开发语言,如果对一门新语言的理解建立在他们已有的知识之上,更能 起到事半功倍的效果。既然名为 Objective-C,它与 C 语言的联系更加密切,然而它又是 Objective 的。与 C转载 2011-04-25 06:53:00 · 132 阅读 · 0 评论 -
从 C++ 到 Objective-C(4):类和对象(续)
作者: DevBean 日期: 2011 年 03 月 19 日方法Objective-C 中的方法与 C++ 的函数在语法方面风格迥异。下面,我们就来讲述 Objective-C 的方法。原型、调用、实例方法和类方法以 – 开头的是实例方法(多数情况下都应该是实例方法);以 + 开头的是类方法(相当于 C++ 里面的 static 函数)。Objective-C 的方法都是 public 的;返回值和参数的类型都需要用小括号括起来;参数之间使用冒号:分隔;参数可以与一个标签 label 关联起来,所谓标签转载 2011-04-26 10:56:00 · 767 阅读 · 0 评论 -
从 C++ 到 Objective-C(3):类和对象
作者: DevBean 日期: 2011 年 03 月 19 日既然是面向对象语言,类和对象显然是应该优先考虑的内容。鉴于本系列已经假定你已经熟悉 C++ 语言,自然就不会去解释类和对象的含义。我们直接从 Objecti-C 和 C++ 的区别开始说起。Objetive-C 使用的是严格的对象模型,相比之下,C++ 的对象模型则更为松散。例如,在 Objective-C 中,所有的类都是对象,并且可以被动态管理:也就是说,你可以在运行时增加新的类,根据类的名字实例化一个类,以及调用类的方法。这比 C++ 的转载 2011-04-26 10:33:00 · 931 阅读 · 0 评论 -
从 C++ 到 Objective-C(8):继承(续)
<br />作者: DevBean 日期: 2011 年 03 月 22 日<br /> <br /><br />Protocol 对象<br />运行时,协议就像是类对象,其类型是 Protocol*。例如,conformsToProtocol: 方法就需要接受一个 Protocol* 类型的参数。@protocol 关键字不仅用于声明协议,还可以用于根据协议名返回 Protocol* 对象。Protocol* myProtocol =@protocol(协议名)<br />远程对象的消息传递<br />转载 2011-04-26 14:51:00 · 784 阅读 · 0 评论 -
从 C++ 到 Objective-C(10):实例化(续)
<br />作者: DevBean 日期: 2011 年 03 月 24 日<br /> <br /><br />self = [super init...]<br />在上一篇提到的代码中,最不可思议的可能就是这句 self = [super init...]。回想一下,self 是每个方法的一个隐藏参数,指向当前对象。因此,这是一个局部变量。那么,为什么我们要改变一个局部变量的值呢?事实上,self 必须要改变。我们将在下面解释为什么要这样做。<br />[super init] 实际上返回不同于当前对转载 2011-04-26 16:39:00 · 1287 阅读 · 1 评论 -
从 C++ 到 Objective-C(7):继承
简单继承Objective-C 也有继承的概念,但是不能多重继承。不过,它也有别的途径实现类似多重继承的机制,这个我们后面会讲到。C++Objective-Cclass Foo :public Bar, protected Wiz{}@interface Foo : Bar // 单继承// 如果要同时“继承” Wiz,需要使用另外的技术{}@end在 C++ 中,一个类可以继承自一个或多个类,使用 public、protected 以及 private 修饰符。子类的函数如果转载 2011-04-26 14:28:00 · 1082 阅读 · 0 评论 -
从 C++ 到 Objective-C(6):类和对象(续三)
作者: DevBean 日期: 2011 年 03 月 21 日消息和消息传输给 nil 发送消息默认情况下,给 nil 发送消息也是合法的,只不过这个消息被忽略掉了。这种机制可以避免很多检查指针是否为空的情况。不过,有些编译器,比如 GCC,也允许你通过编译参数的设置关闭这一特性。将消息代理给未知对象代理 delegation 是 Cocoa 框架中 UI 元素的一个很常见的部分。代理可以将消息转发给一个未知的对象。通过代理,一个对象可以将一些任务交给另外的对象。// 设置一个辅助对象 assistant转载 2011-04-26 14:18:00 · 708 阅读 · 0 评论 -
从 C++ 到 Objective-C(5):类和对象(续二)
作者: DevBean 日期: 2011 年 03 月 20 日成员函数的指针:选择器在 Objective-C 中,方法具有包含了括号和标签的特殊语法。普通的函数不能使用这种语法。在 Objective-C 和 C 语言中,函数指针具有相同的概念,但是对于成员函数指针则有所不同。在 C++ 中,尽管语法很怪异,但确实兼容 C 语言的:成员函数指针也是基于类型的。C++class Foo{public:int f(float x){...}}; Foo barint(Foo::*p_f)(f转载 2011-04-26 14:10:00 · 1180 阅读 · 0 评论 -
从 C++ 到 Objective-C(2):语法概述
<br />作者: DevBean 日期: 2011 年 03 月 18 日<br /> <br /> 关键字<br />Objective-C 是 C 语言的超集。类似于 C++,良好的 C 源代码能够直接被 Objective-C 编译器编译。不同于 C++ 直接改变 C 语言的设计思路,Objective-C 仅仅是在 C 语言的基础上增加了一些概念。例如,对于类的概念,C++ 是增加了一个全新的关键字 class,把它作为语言内置的特性,而 Objective-C 则是将类转换成一个 struct转载 2011-04-25 06:58:00 · 981 阅读 · 0 评论 -
从 C++ 到 Objective-C(9):实例化
作者: DevBean 日期: 2011 年 03 月 23 日类的实例化位导致两个问题:构造函数、析构函数和赋值运算符如何实现,以及如何分配内存。在 C++ 中,变量默认是“自动的”:除非被声明为 static,否则变量仅在自己的定义块中有意义。动态分配的内存可以一直使用,直到调用了 free() 或者 delete。C++ 中,所有对象都遵循这一规则。然而在 Objective-C 中,所有对象都是动态分配的。其实这也是符合逻辑的,因为 C++ 更加 static,而 Objective-C 则更加动态转载 2011-04-26 15:46:00 · 764 阅读 · 0 评论