中文译文
1、Objective-C的语法与Cocoa框架
一个最基本的区别:Objective-C是一种语言,而Cocoa是一种MacOS X的编程框架。 从理论上说,在没有Cocoa框架做前端时可以使用objective - c。但在MacOS X,两者基本上是没区别的,大部分的Cocoa框架已经提供的语言的一部分类。 更准确地说:Cocoa框架是实现苹果,对于MacOS X,OpenStep的标准,最早出现于1994年。它由一个开发框架基于objective - c。的GNUstep项目6是另一个实现,它是免费的。其目标是一样便携可能在大多数Unix系统上,至今仍在发展。 1.1、 Objective-C的简史
很难为一种语言给出一个精确的出生日期,有一些由于事实时间之间的第一步骤,改进,标准化和官方公告。然而,如图1中给出了粗略的历史要快速浏览一下它的祖先和objective - c“挑战者”。
smalltalk - 80是第一个“真正的”对象的语言之一。c++和objective - C是两个不同的
分支机构,建立一个C语言的超集。objective - c非常接近Smalltalk的说法语法和活力,而c++静态的,得多的目标有更好的运行时的性能。Java c++受众目标,但也很受Smalltalk的对象模型。这就是为什么,尽管这个文档的标题,但许多引用Java。c#由微软开发的语言,是一种直接的挑战者objective - c。
objective - C + +是一种objective - C和c++之间的合并。它已经是可用的,但一些 行为仍然不完美。objective - c + +的目标是混合了objective - c的语法 和c++受益于两个世界的最好特性(参考64页14节)。 1.2、 Objective-C 2.0
当前文档已经更新,以考虑在objective - c 2.0的新功能,已经和MacOS X10.5发布。这些特性是深的技术改进,但高级开发人员很容易 枚举的修改。他们现在可以使用: ?一个垃圾收集器:参考6.6节48页; ?属性:参考12.2节58页;
?快速枚举:参考节11.2.2 55页;
?新关键词@optional和@ required协议:参考4.4节22页; ?更新objective - c运行时库特性:参考13.2节在63页。 每一个详细的在一个特定的部分。
2、语法概要
2.1关键字 objective - C是C语言的衍生语言。像c++,精心编写的C程序compile-able objective-C,只要是不使用的一些不好的实践所允许C。objective - c只添加了一些概念和它们相关的关键词。为了避免冲突,这些关键字从@(在)字符开始。
这是(短)详尽的清单:@class,@ interface,@ public,@implementation @private、
@protected @try,@catch,@throw,@finally,@end,@encode @protocol @selector,@ synchronized,@ def(不再记录在[4])。objective - c在前一页2.0(cf。1.2)增加了@optional,@ required,@property,@dynamic,@synthesize。让我们归纳一下,类型id,SEL和Bool,boolean等。最后,一个关键字可用在特定上下文中,则不是保留字。,inout ,bycopy,byref,单向的(他们可以在定义协议:参见4.4.5节24页)和getter、setter,读写,只读的,分配、保留、复制、nonatomic(他们可以在定义属性:参看12.2节58页)。
有一种简单的语言关键字之间的混乱和一些方法继承了从根类NSObject(每个类的母亲,参看3.1节10页)。例如,类似——“关键词”寻找内存管理公司名叫alloc,保留,释放和autorelease事实上NSObject的方法。单词超级和自我(参见3.3.1节在12页),也可以理解为关键词,但是自我实际上是一个隐藏的参数方法,和超级指令要求编译器使用自我迪?不同。然而,这些错误的关键字之间的混乱和真实的不可能是正常使用的问题。 2.2注释
注释:/ * * /和/ /是允许的。 2.3混合了代码和声明 像在c++中,可以插入变量的 声明在一块指令。 2.4 新类型和值
2.4.1 BOOL, YES, NO
在c++中,布尔类型是bool。在objective - c,它是BOOL,可以设置为“YES”或“NO”。 2.4.2 nil, Nil and id
这三个关键词在之后的文档解释,现在简单介绍一下: ?每个对象的类型是id。这是弱类型的工具;
? nil相当于空指向一个对象的指针。nil和NULL能互换的。
? Nil相当于Nil类指针。在objective - c中,类是一个对象(它是元类的实例)。 2.4.3 SEL
SEL类型可以存储选择器的值,方法标识符与任何无关的类实例对象。这些
值可以 通过调用@selector计算。可以使用选择器作为一种指针方法,即使它不是技术上真正 的指向函数的指针。看15页3.3.5节获取详情。
2.4.4 @encode
为目的的互操作性,the objective - c数据类型,甚至自定义类型,和原始类型的函数或方法,可以根据 ASCIIa编码,根据记录格式[4]。一个调用@encode(类型)返回一个表示类型的C字符串(char *)。
2.5组织源代码:.h和.m文件,include
像在c++中,它是有用的分裂之间的代码为每个类接口和实现。objective - c的用途。h文件头,。代码;m文件。mm文件用于objective - c(见64页14节)。objective - c介绍了#进口取代# include指令。事实上,每一个C头应该使用编译警卫来防止多个夹杂物。这是汽车,电气自动方式在使用#导入。下面是一个典型的接口/实现的例子。objective - c的语法解释。
2.6 类名:为什么是NS?
在本文档中,几乎所有类名以NS开始,比如NSObject或NSString。的原因
很简单:他们是可可类,大多数可可和NS自启动开课吗NeXTStep之下。 这是一个常见的实践使用前缀来识别类的起源。 2.7 函数和方法的不同
objective - c语言不是用函数调用使用方括号。这将是一个合法的思想观察代码时那样:[对象doSomething];而不是object.doSomething();但事实上,objective - C C的超集,所以相同的语法和语义功能匹配的C声明,实现和调用。相反,方法,不存在在C语言中,有一个特殊的语法,其中包括方括号此外,迪吗?参考不仅符合语法,还的意思。这是在3.2节进一步详细的在下一页:这不是一个方法调用,这是发送消息。这不仅仅是一个简单的学术资格,影响objective - c的机理。即使是相同的关于源代码组织,这种机制允许更多的活力。35.848,它兼容在运行时添加一个方法(参看13.2节在63页)。语法也更具可读性,尤其是嵌套调用(参考3.3.1节在12页)。
附 录A:源程序代码
1、登录界面的核心代码
request.setCharacterEncoding(\
response.setContentType(\ PrintWriter out = response.getWriter(); String name=request.getParameter(\ String password=request.getParameter(\ String op=request.getParameter(\ if(op.equals(\管理员\ { User_0 u=new User_0(name,password); User_0Imp ui=new User_0Imp(); boolean b=ui.findUser_0(u); if(b) { out.println(\管理员登录成功了!')\ HttpSession session=request.getSession();
session.setAttribute(\
out.println(\正在跳转,请等待...\ response.setHeader(\ } else { out.println(\老师用户添加失败!')\ out.println(\正在跳转,请稍候...\ response.setHeader(\ out.flush(); out.close(); }
2学生选课操作的核心代码 用户操作:
序号 | 星期 | 节数 | 课程 | 教室 | 教师 | 可选人数 | 已选人数 | 操作 | ||
---|---|---|---|---|---|---|---|---|---|---|