这篇文章记录一下objective c的基本语法。
1) Objects, Classes, and Messaging
id anObject; id 可以表示任意的数据类型。
nil: 表示任意的空对象。
typedef struct objc_object {
Class isa;
} *id;
typedef struct objc_class *Class;
isa是个指针,这个就实现了语法的动态绑定功能。
message: 其实就是一些函数,在objective c中就叫message,
[receiver message]
[myRectangle setOriginX: 30.0 y: 50.0]; //多参数例子
其实objc也支持dot来实现变量的调用,这是一个语法糖。
class
int i = sizeof(Rectangle); 这个看起来很C的语法,在objc中就变成一个操作符号了。
if ( [anObject isMemberOfClass:someClass] )
if ( [anObject isKindOfClass:someClass] )
上面两个的区别是kindof的识别范围更广包括继承关系的class
instance的创建
id myRectangle;
myRectangle = [Rectangle alloc]; alloc就是给class分配内存, 在objc中所有的对象都在heap上。
singlton
static MyClass *MCLSSharedInstance;
@implementation MyClass
+ (MyClass *)sharedInstance
{
// check for existence of shared instance
if (self == [ThisClass class]) {
// Perform initialization here.
...
}
// create if necessary
return MCLSSharedInstance;
}
// implementation continues