最近做的一项目中要参照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;
相关推荐
中文名: Objective-C基础教程 作者: Mark Dalrymple Scott Knaster译者: 高朝勤 杨越 刘霞图书 分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社 书号: ISBN: 9787115208774 发行时间: 2009...
Objective-C语法快速参考, word格式.详解语法,适合初学者
《Objective-C程序设计》(作者杨正洪、郑齐心、李建国)通过大量的实例系统地介绍了Objective-C语言的基本概念、语法规则、框架、类库及开发环境。读者在阅读本书后,可以掌握Objective-C语言的基本内容,并进行...
在Objective-C中,字符串是一种表示文本数据的数据类型,用于存储和操作文本信息。Objective-C中的字符串类型是NSString类的实例。NSString类提供了丰富的方法和属性,用于处理字符串的创建、操作和格式化。 以下是...
对于一门语言得学习,个人觉得最主要得就是其语法格式和那些关键字。 因为对于基本现在大多数得语言,每种语言都是一种符合人思维得方式来与计算机交流。 因此,其实每种语言中定义或是封装好得基础类和类库,其实都...
CHCSVParser是CSV文件的Objective-C解析器。 支持平台 Mac OS X 10.7以上 iOS 6以上 用法 为了使用CHCSVParser ,您需要在项目中包括以下两个文件: CHCSVParser.h CHCSVParser.m CHCSVParser需要ARC。 解析中 ...
这是用于iOS和OS X上的Objective-C运行时的类浏览器。它使您可以完全访问运行时中加载的所有类。 允许您动态加载新模块及其类; 显示在每个类上实现的每种方法; 并以标头(.h)文件格式显示信息。 我们发现这是一...
SwiftSwift语言是供iOS和OS X应用编程的新编程语言,苹果公司宣称Swift在各个方面优于常用的Objective-c语言,不会有多复杂的符号和表达式。同时,Swift更加快速、便利、高效、安全。而且会与Object-C相兼容。 这套...
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxygen可以从一套归档源文件开始,生成...
该代码和API将使用块,GCD和新的Objective-C语法,尽可能地做到现代。 当前的目标是针对OS X 10.7+和iOS 5.0+,但这可能会改变。贡献项目开始后,我希望通过请求请求做出贡献。 如果您打算对代码进行大量添加
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxygen可以从一套归档源文件开始,生成...
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxgen可以从一套归档源文件开始,生成HTML...
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxygen可以从一套归档源文件开始,生成...
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxgen可以从一套归档源文件开始,生成HTML...
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxygen可以从一套归档源文件开始,生成...
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxygen可以从一套归档源文件开始,生成...
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxygen可以从一套归档源文件开始,生成...
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxgen可以从一套归档源文件开始,生成HTML...
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxgen可以从一套归档源文件开始,生成HTML...