最近做的一项目中要参照mac机上的代码,它使用的是其特有的 Objective-C的语言,
由于需要,所以自己找资料了解了下,并参照别人的文档写了一个小小的笔记。
1 #import #include 包含头文件
@class String; 类前置申明
@interface NewClass : Object
{
@public int aValue;
@protected //缺省情况下只能被子类所见 int value2;
@private //不可见 int mrInvisible;
}
NewClass是Object的派生类
method既有“类”的(也有些人叫做“工厂”的),也有“实例”的。类method只能由类对象访问,实例method显然由实例访问。
+ 表示 类 method - 表示 实例 method
然后,在“( )”中你填入method返回值的类型,除非你返回的是代表任何对象的通用类型id。在然后,如果你的method有参数的话,你先写一个“:”,跟着是在“( )”中间的参数类型,再接着是变量名。你可以一直写下去,直到以“;”结束。 同时,在第一个参数之后和下一个“:”之前,你还可以放入一些单词,但单词与“:”之间不能有空格。 也许你现在已经糊涂了,让我们看一个类和实例method。
+createWith: (int)value; //足够简单
-(void)say: (String *)what to: (String *)name; //第一个参数是what,to是method名称的一部分。
在参数表中间使用额外的单词可以使得method念起来更容易理解。就象上面第二个method,念起来象“say 'Hello' to jik”,而不是“say 'Hello', jik”。 可变长度参数表的语法和C语言中是一样的:
-(void)doStuff: (id)format,...;
@end // 告诉编译器我们完成定义了:
消息 /函数 的使用
[object jumpAround];
或
[object jump: forward]; //forward 为参数
“object”可以是一个类也可以是类的一个实例。通常类以大写字母开头,而实例则以小写开头。如果“object”是类的话,你只能要求它执行类method,反之亦然。
例如,要建立类“Object”的一个新实例,我们可以使用...: [Object alloc];
“alloc”是为新对象分配内存的类method。但这样并不能使得对象能够使用,因为它的实例变量还没有初始化...要那样做的话,我们调用“init”...因此,我们需要做的全部事情是: id object=[Object alloc]; [object init];
上面两句等价于: id object=[[Object alloc] init];
类的实现:
@implementation NewClass (这里可以再次说明其基类,也可以不说)
以下是一个简短的method定义的例子:
-sayHello { printf("Hello world! ");
return self; }
下面一个例子是有参数使用消息的:
-say: (String *)What { printf("%s ",[what cString]);
return self; }
@end
新数据类型 BOOL是布尔类型,可以是YES或NO,NO为0,YES为非0。 STR为char *。 IOD为FILE *。 id是代表任何ObjC对象的通用类型。
SEL类型是代表method的变量。你可以要求对象执行SEL代表的method。你用@selector(methodName)来创建SEL。“methodName”是method名的ObjC表示形式。例如前面提到的“say:to:”。
IMP用C语言指针代表一个method。这用于你需要节省寻找消息的处理程序的时间的情况下,因为IMP是对method的直接链接。通常用于需要高速度的循环过程中。 这些也许对你来说基本够用了......象我前面说过的,这篇文章不应该是关于ObjC的唯一资源。
类别(Catagory)
@interface ClassName (CatagoryName) @implementation ClassName(CatagoryName) ClassName是你要扩展的类的名称,CatagoryName是类别的识别的名称。类别可以访问所扩展的类的实例变量。
协议(Protocol)
协议,顾名思义,定义一组类之间相互遵守的行为规范。协议没有界面和实现,但他们与界面更加相似。你不需要添加新的实例变量,也不添加新的method或定义任何method的内部实现。协议所需要做的只是定义一套要求所有类都必须包含的method,以遵循这个协议。
@protocol ProtocolName 接着是任意数量的method的声明,请使用在界面定义的相同的语法。最后以@end结束。
@interface NewObject : Object 上述的语句告诉编译器这是一个叫NewObject的对象,它的超类是Object,并要符合ProtocolName的协议。
要查询一个对象是否满足特定的协议,可以使用“conformsTo"的mthod。 [object conformsTo:@protocol(ProtocolName)]; 这会根据对象是否符合的情况返回YES或NO。
要查询一个参数是否符合特定的协议,可以象如下地声明method: -method:(id)argument;
相关推荐
### iPhone开发:Objective-C语法入门 #### 一、Objective-C简介 Objective-C是一种面向对象的编程语言,它是在C语言的基础上扩展而成的。Objective-C主要应用于苹果公司的操作系统上,包括macOS、iOS、watchOS以及...
首先,"Programming In Objective-C.chm" 是一本关于Objective-C编程的电子书,可能涵盖了语言的基本语法、类和对象的概念、消息传递机制、内存管理(在Objective-C中是ARC,即自动引用计数)、类别、协议、 Blocks...
中文名: Objective-C基础教程 作者: Mark Dalrymple Scott Knaster译者: 高朝勤 杨越 刘霞图书 分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社 书号: ISBN: 9787115208774 发行时间: 2009...
- **Objective-C2.0程序设计语言**:详细介绍了Objective-C语言本身的各种特性和语法。 - **Objective-C版本说明**:列出了在最新版本的macOS系统中有关Objective-C运行时系统的重要更新和变动。 #### 运行时系统的...
Objective-C 是一种面向对象的编程语言,主要应用于Apple的iOS和macOS平台开发。它是在C语言的基础上扩展了Smalltalk的...熟悉Objective-C语法和iOS开发流程是基础,同时了解mobi文件格式的相关知识也是非常必要的。
- **消息语法**:展示了Objective-C中消息的书写格式。 - **向nil发送消息**:解释了向nil发送消息的行为和处理方式。 - **接收者的实例变量**:说明了如何通过消息访问接收者的实例变量。 - **多态性**:讨论了...
Objective-C语法快速参考, word格式.详解语法,适合初学者
3. Objective-C基础语法:包括标识符、数据类型、变量、常量、运算符、控制流程语句、函数、数组和结构体等C语言基础部分,以及面向对象的概念,包括类和对象、继承、多态、封装、消息传递等。 4. 内存管理:...
在Objective-C中,这些基本数据类型可以通过点语法来访问和修改,也可以作为函数参数传递,或者存储在数组和结构体中。在实际编程中,理解这些数据类型的特点和限制至关重要,以确保程序的正确性和效率。 在"0401...
Objective-C是一种面向对象的编程语言,它在C语言的基础上增加了SmallTalk-80的特性,主要应用于Apple的iOS和macOS平台。Objective-C中的UIKit框架是构建用户界面的基础,提供了丰富的控件和功能来创建iOS应用程序。...
1. **Objective-C基础语法**:Objective-C的语法与C语言类似,但增加了消息传递机制。学习如何声明类、属性和方法,以及了解`@interface`、`@implementation`和`@end`关键字的作用。 2. **对象和类**:Objective-C...
- **Objective-C 2.0语言概览**:附录B提供了Objective-C 2.0的快速参考指南,方便读者快速查阅语法和关键字。 通过以上章节的介绍,读者不仅能够掌握Objective-C的基本语法和编程技巧,还能深入了解面向对象编程的...
Objective-C是苹果生态系统的核心语言,它基于C语言并加入了Smalltalk的面向对象特性,使得开发过程更加灵活和高效。 在本书中,读者将学习到Objective-C的基本语法,包括类、对象、消息传递等核心概念。作者详细...
从Mac OS X 10.5版本开始,Objective-C增加了点操作符语法,允许开发者使用更简洁的点语法来访问和修改对象的属性,例如使用photo.caption来代替[photo caption]。 创建对象主要有两种方式,第一种是通过类方法直接...
1. **面向对象编程(Object-Oriented Programming, OOP)**:Objective-C基于C语言,并在其基础上引入了面向对象的概念,如类、对象、继承、封装和多态等。学习Objective-C首先要理解这些OOP的基本概念。 2. **类...
虽然这个环境可能不如Mac上的Xcode功能齐全,但对于初学者学习Objective-C语言的基本概念和语法,它仍然是一个实用的工具。然而,由于GNUstep的兼容性和功能限制,对于复杂的iOS或macOS应用开发,Windows环境可能...
Objective-C 起源于C语言,它在C的基础上添加了面向对象的功能,并引入了Smalltalk的动态性。其主要特点包括: 1. 语法简洁:Objective-C 的语法相对简单,易于理解和学习。 2. 消息传递:Objective-C 使用消息传递...
4. **程序结构**:Objective-C的程序结构包括声明、初始化、执行语句等,遵循C语言的语法规范。 5. **继承与多态**:继承允许子类继承父类的属性和方法,实现代码重用。多态是指不同类的对象可以响应相同的消息,...