OC—基礎(chǔ)語法

學(xué)習(xí)目標(biāo)

1.【了解】Objective-C語言簡介

2.【掌握】第一個OC程序

3.【掌握】OC中的字符串

4.【熟悉】OC中的一些玩意

5.【了解】面向過程與面向?qū)ο?/p>

6.【掌握】類的聲明和實現(xiàn)

7.【掌握】類的方法

一饱搏、Objective-C語言簡介

Objective-C簡稱Obj-C或者OC腮敌,Objective的意思就是面向?qū)ο蟮淖槿ァC其實就是在C語言的基礎(chǔ)之上悴势,封裝了一層面向?qū)ο蟮恼Z法,他并不是一門全新的編程語言毫捣。OC是Mac OS X系統(tǒng)和iOS系統(tǒng)的主要開發(fā)編程語言名党,當(dāng)然馬上要被Swift給替代了,然并卵质蕉,我們還是得好好學(xué)習(xí)OC势篡,因為現(xiàn)在大多數(shù)公司還是使用OC來做iOS開發(fā)。

二模暗、第一個OC程序

OC程序的后綴和入口

C程序的源文件的后綴名為.c禁悠,OC程序的源文件是后綴名為.m,m就是message的意思兑宇。因為OC是完全兼容C語言的碍侦,所以在.m文件之中是可以寫任意的C代碼。并且OC中main函數(shù)仍然是OC程序的入口隶糕,作用和C語言中的是一樣的瓷产,這里就不贅述了。

#import指令

他是一個增強版的#incluce指令枚驻,并且用法和#include指令的用法相同濒旦。并且#import在包含文件的時候會先判斷這個文件是否已經(jīng)被包含,如果沒有被包含就包含再登,如果已經(jīng)被包含尔邓,就算了晾剖。

框架

蘋果或者第三方事先將一些牛逼(常用)的功能寫好,把這些功能模塊封裝在一個一個類之中梯嗽,把這些功能提供給大家用齿尽。這些類的集合就叫做框架,說白了就是一個功能集合灯节。

Foundation框架

提供了一些OC最基礎(chǔ)的功能循头。Foundation.h這個文件中包含了所有Foundation框架中的頭文件,#import 就相當(dāng)于包含了所有Foundation框架的頭文件显晶。

@autoreleasepool

他是一個自動釋放池贷岸,管理內(nèi)存的,到時候再扯磷雇。

NSLog函數(shù)

是printf函數(shù)的增強版偿警,作用也是向控制臺輸出信息。

1.NSLog輸出完畢信息之后會默認(rèn)加一個\n唯笙,如果我們手動加了一個\n螟蒸,NSLog的自動換行就會失效。

2.在輸出信息的同時還會輸出一些與程序有關(guān)的其他信息(系統(tǒng)時間崩掘、程序名七嫌、進(jìn)程ID、線程ID)苞慢。

3.NSLog函數(shù)支持printf函數(shù)的全部格式控制符诵原,其用法也相同。

4.NSLog函數(shù)的字符串參數(shù)前面必須要加一個@符號挽放,這是OC里的字符串格式绍赛。

5.NSLog可以使用%@格式控制符輸出對象,而printf不能輸出對象辑畦。

6.NSLog函數(shù)的第一個參數(shù)是NSString類型的指針吗蚌,所以必須給一個OC字符串。

三纯出、OC中的字符串

C語言使用字符數(shù)組和字符指針的方式來存儲字符串蚯妇,OC中專門設(shè)計了一個新的數(shù)據(jù)類型(NSString)來保存字符串。我們無需關(guān)心內(nèi)部是如何實現(xiàn)的暂筝,只要會使用就行了箩言,相對于C語言中的字符串,它更易用更方便焕襟。

注意:

1.OC中的字符串常量必須加一個@前綴分扎,寫在雙引號外面。比如

@"zhoujianfeng"

2.OC的字符串常量使用NSString類型的指針變量來保存地址胧洒。比如

NSString *str = @"zhoujianfeng";

3.NSString類型的指針變量只能保存OC字符串地址畏吓。不能

NSString *str = "zhoujianfeng";//這種是錯誤的

4.使用%@格式控制符輸出NSString類型的字符串。比如

NSLog(@"%@",str);

四卫漫、OC中的一些玩意

NS前綴:為了區(qū)分這些東西的前身是NeXTStep菲饼,就為他們加了一個前綴NS。

@符號:將C語言的字符串轉(zhuǎn)換為OC的字符串列赎,"zhou" 加了就成 @"zhou"宏悦。OC中新增的關(guān)鍵字絕大部分都是以@開頭。

OC支持C中的所有數(shù)據(jù)類型包吝,并且在此基礎(chǔ)之上新增了一些數(shù)據(jù)類型饼煞。比如BOOL類型、Boolean類型诗越、id類型砖瞧、class、SEL類型嚷狞、nil块促、block代碼塊等等。

五床未、面向過程與面向?qū)ο?/p>

面向過程:

遇到一個需求的時候竭翠,實現(xiàn)這個需求的過程、步驟都是自己親自去做薇搁。(執(zhí)行者)與底層交互效率很高斋扰。

面向?qū)ο螅?/p>

遇到一個需求的時候,實現(xiàn)這個需求的過程啃洋、步驟自己不做传货,而是去找一個專門做這個事情的人來做。(指揮者)后期程序的維護(hù)和擴展非常的方便裂允,如果功能發(fā)生變化损离,我們只需要換一個人就行了。

六绝编、類的聲明和實現(xiàn)

015-OC基礎(chǔ)語法-OC筆記

對象是生活中看得見僻澎、摸得著、具體存在的個體十饥。而類則是對一群具有相同特征窟勃、行為的事物的統(tǒng)稱。

類的三要素:

類名:這類事物叫做什么名字

成員變量:這類事物具有相同的特征

方法:這類事物具有相同的行為

類的聲明語法:

@interface 類名 : 父類名

{

//實例變量

}

//方法的聲明

@end

類的實現(xiàn)語法:

@implementation 類名

//方法的實現(xiàn)

@end

注意:

1.類的聲明一定要在類的實現(xiàn)前面逗堵,并且是直接寫在源文件中秉氧,不能寫到main函數(shù)中。

2.類名的每一個單詞的首字母大寫蜒秤,類名和NSObject之間是:號汁咏,實例變量名必須要以下劃線開頭亚斋。

3.類分為類的聲明和類的實現(xiàn)兩部分,缺一不可攘滩,并且都以@end結(jié)尾帅刊。

簡單案例:

#import

//類的聲明

@interface Person : NSObject

{

@public

NSString *_name;

int _age;

float _height;

float _weight;

}

@end

//類的實現(xiàn)

@implementation Person

@end

//main主函數(shù)

int main(int argc, const char * argv[]) {

@autoreleasepool {

Person *person = [Person new];

//因為這些實例成員的訪問權(quán)限是@public,所以可以直接訪問

person->_name = @"jack";

person->_age = 18;

person->_height = 1.8;

person->_weight = 60;

//輸出人的各種信息

NSLog(@"name = %@,age = %i,height = %.2f,weight = %.2f",person->_name,person->_age,person->_height,person->_weight);

}

return 0;

}

七漂问、類的方法

我們都知道類是一群具有相同的屬性赖瞒、相同的行為的事物統(tǒng)稱,在這里說的行為就是類的方法(有些屌絲也叫函數(shù))蚤假。和C語言的函數(shù)類似栏饮,但語法截然不同。

方法的聲明

位置:寫在類聲明里的屬性大括號后面磷仰,@end前面

無參數(shù)語法:- (返回值類型)方法名;

有參數(shù)語法:- (返回值類型)方法名:(參數(shù)類型)參數(shù)名稱;

多個參數(shù)語法:- (返回值類型)方法名:(參數(shù)類型)參數(shù)名稱 方法名:(參數(shù)類型)參數(shù)名稱 方法名:(參數(shù)類型)參數(shù)名稱;

@interface Person : NSObject

{

NSString *_name;

}

//聲明無參數(shù)的方法

- (void)sayHi;

//聲明一個參數(shù)的方法

- (void)eatWith:(NSString *)foodName;

//聲明多個參數(shù)的方法

- (int)getSumWithNum1:(int)num1 andNum2:(int)num2;

@end

方法的實現(xiàn)

位置:寫在類實現(xiàn)里@end前面

無參數(shù)語法:- (返回值類型)方法名{方法體}

有參數(shù)語法:- (返回值類型)方法名:(參數(shù)類型)參數(shù)名稱{方法體}

多個參數(shù)語法:- (返回值類型)方法名:(參數(shù)類型)參數(shù)名稱 方法名:(參數(shù)類型)參數(shù)名稱 方法名:(參數(shù)類型)參數(shù)名稱{方法體}

@implementation Person

//實現(xiàn)無參數(shù)的方法

- (void)sayHi{

//在方法的實現(xiàn)中袍嬉,無需創(chuàng)建對象可以直接訪問類的成員變量

NSLog(@"我的名字是:%@",_name);

}

//實現(xiàn)一個參數(shù)的方法

- (void)eatWith:(NSString *)foodName{

NSLog(@"吃%@",eatFood);

}

//實現(xiàn)多個參數(shù)的方法

- (int)getSumWithNum1:(int)num1 andNum2:(int)num2{

return num1 + num2;

}

@end

方法的調(diào)用

無參語法:[對象名 方法名];

有參語法:[對象名 方法名:實參];

多個參數(shù)語法:[對象名 方法名:實參 方法名:實參 方法名:實參];

//實例化一個對象

Person *person = [Person new];

//給對象的_name屬性賦值

person -> _name = @"好玩";

//調(diào)用無參數(shù)的方法。有些屌絲也稱:向person對象發(fā)送了一條sayHi消息

[person sayHi];

//調(diào)用一個參數(shù)的方法

[person eatWith:@"包子"];

//調(diào)用多個參數(shù)的方法

int result = [person getSumWithNum1:10 andNum2:20];

NSLog(@"result = %i",result);

注意:

1.有參方法的方法名也包括:芒划,每個冒號后面就是一個參數(shù)冬竟,有多少個參數(shù)就有多少個冒號。

2.在主函數(shù)調(diào)用方法必須要通過實例化一個對象來調(diào)用(后面還會學(xué)類方法民逼,先不考慮)泵殴。

3.多個參數(shù)的方法,方法名命名要規(guī)范拼苍。建議使用with和and來拼接方法名笑诅,要讓調(diào)用者知道這個參數(shù)有何作用,一目了然疮鲫。

4.同一個類可以創(chuàng)建N多個對象吆你,對象與對象互不影響(一個對象實例變量的值對另一個對象毫無關(guān)系)。

5.哪個對象調(diào)用的方法俊犯,方法中的成員變量就是訪問那個對象的成員變量的值妇多。

6.如果成員變量的類型是基本類型,默認(rèn)值是0燕侠,是指針類型就默認(rèn)值是nil者祖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市绢彤,隨后出現(xiàn)的幾起案子七问,更是在濱河造成了極大的恐慌,老刑警劉巖茫舶,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件械巡,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機讥耗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門有勾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人葛账,你說我怎么就攤上這事柠衅。” “怎么了籍琳?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贷祈。 經(jīng)常有香客問我趋急,道長,這世上最難降的妖魔是什么势誊? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任呜达,我火速辦了婚禮,結(jié)果婚禮上扳埂,老公的妹妹穿的比我還像新娘蔓罚。我一直安慰自己嘶炭,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布霜威。 她就那樣靜靜地躺著,像睡著了一般册烈。 火紅的嫁衣襯著肌膚如雪戈泼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天赏僧,我揣著相機與錄音大猛,去河邊找鬼。 笑死淀零,一個胖子當(dāng)著我的面吹牛挽绩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播驾中,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼唉堪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哀卫?” 一聲冷哼從身側(cè)響起巨坊,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎此改,沒想到半個月后趾撵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年占调,在試婚紗的時候發(fā)現(xiàn)自己被綠了暂题。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡究珊,死狀恐怖薪者,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情剿涮,我是刑警寧澤言津,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站取试,受9級特大地震影響悬槽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瞬浓,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一初婆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧猿棉,春花似錦磅叛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至位迂,卻和暖如春访雪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掂林。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工臣缀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泻帮。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓精置,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锣杂。 傳聞我的和親對象是個殘疾皇子脂倦,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容