ObjC 里的對象和類
-
如何創(chuàng)建一個類紧憾?
typedef struct_People{
double height;
double weight;
} People;
void squat ( People *people );
void stand ( People *people );
-
在Obj-C里是如何定義這個類的?
@interface People : NSObject //類名People埠戳,繼承自NSObject類
{
double height;
double weight;
}
- ( void ) squat;
- ( void ) stand;
@end
減號是對象方法趟畏,加號是類方法;
Objc里類也是一對象抡句;
-
Obj-C是如何實現(xiàn)一個類的探膊?
@implementation People
- ( void )squat {
height = 1.0;
}
- ( void ) stand {
height = 1.8;
}
@end
-
消息傳遞
Obj-C的對象是建立在堆上分配的結(jié)構(gòu)體上的。所以需要用一個指針引用一個對象待榔。
People *people;
觸發(fā)一個對象的方法
[ people stand ];
-
用類創(chuàng)建一個對象
People *people = [ [ People alloc ] init ];
消息可以嵌套
從內(nèi)到外依次觸發(fā)消息
內(nèi)層方法[ People alloc ];向People類里的對象發(fā)送alloc消息逞壁,會觸發(fā)People類的alloc方法。
在ObjC里類本身也一個對象锐锣。
調(diào)用alloc方法的結(jié)果是:創(chuàng)建并返回一個People類的對象腌闯。
但是這個對象并沒有初始化,只是完成了內(nèi)存的分配雕憔,不能直接使用姿骏。
alloc方法是ObjC里所有類都有的方法,當(dāng)你的類創(chuàng)建時就包含了這個類方法斤彼。
外層消息分瘦,[ people init ];
首先向新創(chuàng)建的對象people發(fā)送一個init消息,觸發(fā)people對象調(diào)用init方法琉苇,會完成自身的初始化嘲玫。
并且把初始化后的對象返回給引用這個對象的指針變量,這時就完成了一個新對象的創(chuàng)建并扇。
init方法其實其實繼承來的(暫時默認people對象本身就有init方法)
-
小結(jié)
如何創(chuàng)建一個類
對象的消息傳遞
如何創(chuàng)建一個對象