欢迎来到天天文库
浏览记录
ID:39466652
大小:42.50 KB
页数:7页
时间:2019-07-04
《Objective-c入门》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、AfirstlookatObjC(中文版)Objective-C入门(AFirstLookatObjective-C)原著:NoahRoberts(jik)翻译:jeff_yecn顾名思义,Objective-C就是面向对象的C语言。你可以使用Objective-C编程,但不使用任何非C语言的东西。但那样将是对这语言的浪费。Objective-C使用所有的C语言的内容,同时添加了一些使得它更具面向对象特征的语法。本指南假定你已经知道什么是面向对象编程,同时熟悉C(你不必是这方面的专家,但是我不打算在这里教你应该已经知道的东西)。我同
2、时必须建议你不要仅仅读这一篇文章,因为它远远不是在Objective-C(ObjC)方面的终极资源。在互联网上你可以找到其它更好、更详细的学习这种语言的资料。在我的网站:members.xoom.com/jik_you上有一些链接,也许你可以从那里开始搜索。ObjC,和其他面向对象语言一样,是围绕着对象的,所以让我展示一下对象的构成。在ObjC中,对象有两部分。它有一个界面,是对象的外在表现。同时它有一个实现,就是它的内部工作机制。换句话说,就是外界看到的部分和看不到的部分。有时,这样更容易理解。界面在ObjC中,界面通常有它自己的
3、头文件(通常是.h),但并不是一定要这样。你可以把界面和实现放在一个文件中,或者把几个界面放在一起,但每个界面是不同的,你必须对此很清楚,否则将会感到非常苦恼。我将只使用在头文件中定义界面的办法。首先,你必须导入这个对象的超类的界面。你可以使用与“#include”相同语法的预处理标识“#import”。事实上,两者之间的区别只是#import会进行检查以确保文件仅被包含一次。有些人选择使用#include,这完全符合语法,但ObjC设计是使用#import,你也许愿意考虑这一点而保护你的界面文件。如果你使用gcc(或egcs等)来
4、作为你的编译器,也许你会愿意使用开关:-Wno-import,否则,gcc会无休止地提示你使用import来代替include。因此,以下是以一个对象为超类的新类的第一行代码,也通常是所有类的开头。#import/*gcc运行时库的对象*/现在,如果你计划引用其他的类,你可以导入他们的头文件,更好的办法是使用@class来声明这些标识是类。界面并不需要知道这个类是什么和怎么做的全部信息,所以引用它的头文件并没有作用,让我们使用@class。@classString;//简单吧?顺便说一下,ObjC同时使用“//”和“/**/”来作为
5、注释,这有时会比较方便。好了,现在我们准备让世界知道想要什么类型的对象,所以让我们声明它。首先我要说明的是我在声明一个新类,在此之前,你应该定义好这个新类的超类。@interfaceNewClass:Object//新类在左边,超类在右边。我并没有漏掉“;”,就是这样写的。现在我们声明实例变量,不管他们是不是私有的(我碰巧认为私有的东西是不应该被人看见的,实际上也是这样:P)。我在一对“{}”中间写上,就象我们在C的结构中做的那样。{@publicintaValue;@protected//缺省情况下只能被子类所见intvalue2
6、;@private//不可见intmrInvisible;}做完这些以后,我们要放入method的原型定义。method只能是公共的,虽然如果我愿意的话,我可以演示给你看如果你访问一个私有的method的时候会产生的编译器警告信息。method既有“类”的(也有些人叫做“工厂”的),也有“实例”的。类method只能由类对象访问,实例method显然由实例访问。例如,我声明了一个保存实例的变量,但在我使用它之前,我必须使用一个类method来产生一个这个变量指向的实例,这样我才可以调用它的实例method。我这样做了以后,我就不能再
7、访问它的类method了。在我释放对象实例之前,我只能访问它的类method。描述一个method时,你根据它是类method还是实例method响应在前面放上“+”或“-”的符号。然后,在“()”中你填入method返回值的类型,除非你返回的是代表任何对象的通用类型id。在然后,如果你的method有参数的话,你先写一个“:”,跟着是在“()”中间的参数类型,再接着是变量名。你可以一直写下去,直到以“;”结束。同时,在第一个参数之后和下一个“:”之前,你还可以放入一些单词,但单词与“:”之间不能有空格。也许你现在已经糊涂了,让我们
8、看一个类和实例method。+createWith:(int)value;//足够简单-(void)say:(String*)whatto:(String*)name;//第一个参数是what,//to是method名称的一部分。在参
此文档下载收益归作者所有