Objective‐C是开发Mac软件的主要编程语言。如果你了解一些面向对象的基本概念和C语言,那么会对你学习Objective‐C有很多帮助,如果你不了解C,那么建议你先读一下C 指南。本人刚刚接触oc,希望跟大家交流学习,共同进步.
Objective-C 不同于其他面向对象语言(如 C++)的一个显著特点是,它不需要你事先知道要传递给消息的对象是哪个类的(跟vb差不多,弱类型),这叫做动态绑定(动态捆绑)或运行时绑定,也就是说消息会在运行的时候才被和对象绑到一块(结合),而不是在编译的时候去做绑定。这样的好处是非常的灵活,给予程序员极大的自由度。比如,我们要在一个文本编辑程序中截取(cut) 文本或图片或表格等,程序不必事先知道要发送 cut:消息给那一类的目标对象。
objective-C 里面, 用一个id变量来表示(指向)一个对象,(既 id object 这样的格式,ID 实际上是个类),实际上就是一个指向内存中的对象数据。objective-C运行的时候会检查核对这个id 指针到底指向那一类的对象。就是我们所说的动态绑定。
消息的传递是这样格式表示
[消息接收者 消息]
假如我有一条狗叫阿花, 我传递给他一个指令(消息):趴下!, 那摸就应该写成
[阿花 趴下]
那阿花就会根据受到的消息,来启动它内部的机构,用它自己的方法, 来产生趴下的动作,来回应我。
在Objective-C 里面定义一个类有些似与在 C里面定义一个结构。
在C语言里定义一个结构是这样:
struct key {
char *word;
int count;
};
但在Objective-C 里面的类定义的不同之处是类里面不仅要有数据部分还要要定义方法(method), 即使数据部分相同而对数据的操作,既方法( method)不同,也属于两个不同的类。
一个类由两部分组成:
? 接口(Interface),声明方法,变量,指出父类和遵守的协议。文件后缀.h;
? 实现(Implementation),实现类,主要包括方法的实现。文件后缀.m(.c,.mm)
类的声明的基本格式:
@interface ClassName : ItsSuperclass
{
instance variable declarations //实例变量声明
}
method declarations //方法声明
@end
比如:
@interface Rectangle:NSObject
{
BOOL filled; NSColor *fillColor;
@private:
float width; float height;
}
+ alloc; //类方法,[Rectangle alloc]
- (void)display; //实例方法 [rectangle display]
(float)width; //存取器方法,和变量同名,获取变量
(void)setWidth:(float)inWidth; //set+变量名,设置变量值
- (void)setWidth:(float)inWidth height:(float)inHeight;
@end
#import "ItsSuperclass.h”
@interface ClassName : ItsSuperclass
{
instance variable declarations
}
method declarations
@end
#import关键字导入一个类的声明,和C++中#include功能一样
区别于#include,可以保证同一个类的声明只被导入一次
每个类的实现中必须导入相应头文件。如
#import "ClassName.h”
@implementation ClassName
method definitions
@end
忽略实例变量的书写,可以忽略父类名的书写
#import “Rectangle.h”
@implementation Rectangle
-(float)width
{
return width;
}
-(void)setWidth: (float)inWidth
{
width=inWidth;
}
@end
好了,本节讨论了object c的基本语法结构,如何定义和实现类,下一节讨论类的继承等面向对象特征