第一天
OC的文件後綴名爲.m(message)的意思,
第一個程序hello world :
打印函數NSLog();和C語言和c++的區別是,它會自動換行。
#import :包含系統的頭文件。和C語言的#include 類似,但是,他會自動判斷是否已經被包含,而C語言中需要用#ifndef #endif來進行管理:
定義一個類:
包含兩個文件:
.h:類的聲明文件,用於變量和函數的聲明
@interface :聲明一個類:後面跟一個類名。
@end 代表這個類結束
@interface : ":"代表繼承的標誌。後面跟父類名。
把成員變量寫在大括號裏面,然後方法名寫在括號外面,
聲明方法:所有在.h中聲明的方法都是公共的方法:
-:說明是個動態方法:(對象的方法)
+:說明是一個靜態的方法:(類的方法)
方法的參數問題:
一個冒號對應一個參數。
.m:實現.h文件中聲明的方法:
@implementation +類名: (實現類中的方法)
@end結尾:
main函數中的方法實現:
1.所有的OC對象都要加一個*,所以OC的所有對象都是指針
2.創建一個對象:例如:Student *stu =[Student alloc];
3。初始化:stu =[Student init];
合成一塊可以寫成:Student *stu = [[Student alloc]init];
4,釋放對象。
點語法:
和c++和java的語法不通,OC 的“.”實際上是調用了類中的動態的方法:。而前兩者是用一個對象來操控他的參數。而在OC中,如果一個類Person ,有屬性age,set 和get方法都已經聲明完畢,
Person *per =[[Person alloc]init];
Per.age=23;--------->[per setAge:23] 調用了set方法:
Int age =per.age;----------->intage = [per getAge] 調用了get方法:
總結:如果“." 作爲左值,調用的是set方法
如果”.“作爲右值,那麼調用的是get方法:
注意:如果在set方法中用self.age =age :相當於自身調用了自身,會造成死循環,不可。。。
同樣,在get方法中也不能return self.age ,這樣也會調用get方法,自身調用自身,死循環、。