Objective-C筆記-2
在學校學習結束,把東西都搬回家,還要一堆的散夥飯吃完了,搞完很多很多事情之後,終於在距離還有不到1個月的過年前,重新寫下東西,學學習什麼的···
那麼現在從Objective-C開始,也是我實習之前的知識點回顧,也算是一個複習吧····
上次的筆記,感覺好像還是有點凌亂,我還是按照當年lnj老師的思路去總結,再自己加上心得和體會吧,還有給個建議就是,有一本書叫做《Objective-C基礎教程》,這本書感覺還是不錯的,配合著lnj老師的視訊看,反正我是這樣乾的···
物件導向基本概念:
引用一句很牛逼的話,就是“萬物皆物件。”意思就是說,這個世界上所有的東西,都是一個物件,這樣這個東西,會一個方法,那麼這個東西就是物件,因為這個東西能幫別人,幹些事情,但是具體是什麼就不知道,但是在程式設計師看來啊,方法什麼的,這個函式,這個物件有什麼,會什麼,傳什麼值都是自己去賦予的。
用書上的話去說,物件導向是相對程式導向而言
-物件導向和麵向過程都是一種思想
-程式導向
+強調的是功能行為
+關注的是解決問題需要哪些步驟
-物件導向
+將功能封裝進物件,強調具備了功能的物件
+關注的是解決問題需要哪些物件
這個是別人的例子啊;
-示例
-把衣服放進洗衣機
+程式導向
*開啟洗衣機
*放進去衣服
*關閉洗衣機
+物件導向
*洗衣機-開啟
*洗衣機-儲存
*洗衣機-關閉
這樣就應該不難理解的,那麼我在工作的時候首先要去找具有所需的功能的物件來用。如果該物件不存在,那麼建立一個具有所需功能的物件。最後這樣簡化開發並提高複用。
那麼在OC中呢,面向對像的核心就是就是物件,若果一開始沒有,我們就去建立一個。 OC中建立物件比較複雜, 首先要理解一個概念叫做類。那麼我們在這個類上要賦予其方法,清楚將來建立出來的物件有哪些屬性和行為,我們就叫這個述事物通過類的形式體現,類是多個同種型別事物的抽象,概念上的定義。
-OC中的類相當於圖紙,用來描述一類事物。也就是說,要想建立物件,必須先有類。
-OC利用類來建立物件,物件是類的具體存在, 因此物件導向解決問題應該是先考慮需要設計哪些類,再利用類建立多少個物件。
-OC中用類來描述事物也是如此,擁有相同(或者類似)`屬性`(狀態特徵)和`行為`(能幹什麼事)的物件都可以抽像成為一個類:
+屬性:對應類中的成員變數。
+行為:對應類中的成員方法。
-定義類其實在定義類中的成員(成員變數和成員方法)
-一般名詞都是類(名詞提煉法),但是呢,若果這個物件擁有相同(或者類似)`屬性`(狀態特徵)和`行為`(能幹什麼事)的物件都可以抽像成為一個類;也就是放在一起,打包;
那麼如何定義一個類:
1.必須以@interface開頭,@end結尾
2.成員變數的宣告,必須寫在@interface與@end之間的大括號中
3.方法的宣告必須在{}下面,不能寫在{}中
如何實現一個類
-格式
@implementation MyClass
- (id)initWithString:(NSString *)aName
{
//寫程式碼處
}
+ (MyClass *)myClassWithString:(NSString *)aName
{
//寫程式碼處
}
@end
注意:!!!必須以@implementation開頭,@end結尾,類名必須和宣告的一致
這裡引用lnj老師的話
物件方法宣告和實現
特徵
+物件方法以-開頭如 -(void)xx;
+物件方法只能由物件來呼叫
+物件方法中可以訪問當前物件的成員變數
+呼叫格式 [物件名 物件方法名];
示例
```
//宣告沒有返回值的方法
- (void)method;
//宣告有返回值的方法
- (int)method;
//宣告有返回值有引數的方法
- (int)method: (int)var;
//宣告有返回值有多個引數的方法
- (int)method: (int)var1 andVar2: (int)var2;
實現
+必須解除安裝以@implementation開頭,@end之間
+在宣告的後面加上{}即表示實現
+講需要實現的程式碼寫在{}中
類方法宣告和實現
-格式
+將物件方法-號變為+號
-特徵
+類方法以+開頭 如+(void)put;
+類方法只能由類來呼叫
+類方法中不能訪問例項(成員)變數,因為類方法由類來呼叫,並沒有建立儲存空間 來儲存類中的成員變數。
-類方法的好處:
+不依賴於物件,執行效率更高;
+能用類方法解決的問題,儘量使用類方法;
-類方法的場合:
+當方法內部不需要使用到成員變數時,可以改為類方法
+類方法一般用於編寫工具方法
-示例
```
//宣告沒有返回值的方法
+ (void)method;
//宣告有返回值的方法
+ (int)method;
//宣告有返回值有引數的方法
+ (int)method: (int)var;
//宣告有返回值有多個引數的方法
+ (int)method: (int)var1 andVar2: (int)var2;
```
-實現
+必須解除安裝以@implementation開頭,@end之間
+在宣告的後面加上{}即表示實現
+講需要實現的程式碼寫在{}中
---
##3.物件方法和類方法區別
物件方法
+物件方法是屬於物件的
+以減號-開頭
+只能讓物件呼叫,沒有物件,這個方法根本不可能被執行
+物件方法能訪問例項變數(成員變數)
+物件方法中可以呼叫當前物件的物件方法
+物件方法中可以呼叫其他物件的物件方法
+物件方法中部可以呼叫類方法
-類方法
+類方法是屬於類的
+以加號+開頭
+只能用類名呼叫,物件不能呼叫
+類方法中不能直接訪問例項變數(成員變數)
+類方法中不能直接呼叫物件方法,要想呼叫物件方法,該物件必須通過引數傳入。
-使用場合:
+當不需要訪問成員變數的時候,儘量用類方法
-類方法和物件方法可以同名
注意:通常會發生一些錯誤:
1)@interface @end和@implementation @end不能巢狀包含
2) OC是弱語法,可以只有@implementation,但實際開發中千萬不要這樣。
4)漏寫@end
5)兩個類的物件宣告順序(可以把順序打亂)
6)成員變數沒有寫在{}裡
7)方法的宣告寫在了{}裡面
8)在宣告時不能對類的成員變數進行初始化,請注意成員變數不能脫離物件而獨立存在
9)方法無法像函式那樣的呼叫
10)成員變數和方法不能用static等關鍵字修飾,不要和c語言混淆
11)類的實現可以寫在mian函式後面,在使用之前只要有宣告就可以
相關文章
- Effective Objective-C 2.0筆記(一)Object筆記
- Effective Objective-C 2.0 閱讀筆記Object筆記
- iOS學習筆記之 Objective-C (三)iOS筆記Object
- 《Effective Objective-C 2.0》讀書/實戰筆記 一Object筆記
- 《Effective Objective-C 2.0 》 閱讀筆記 item20Object筆記
- Day 2 筆記筆記
- docker 筆記2Docker筆記
- sqlserver筆記2SQLServer筆記
- makefile筆記(2)筆記
- cassandra筆記2筆記
- HTML筆記(2)HTML筆記
- Objective-C高階程式設計讀書筆記(二)Object程式設計筆記
- Objective-C高階程式設計讀書筆記(一)Object程式設計筆記
- Objective-C高階程式設計讀書筆記之記憶體管理Object程式設計筆記記憶體
- Objective-C高階程式設計讀書筆記之GCDObject程式設計筆記GC
- Objective-C高階程式設計讀書筆記之blocksObject程式設計筆記BloC
- 『筆記』2-SAT筆記
- linux筆記2Linux筆記
- 社群使用筆記2筆記
- HTML DOM筆記2HTML筆記
- c++筆記2C++筆記
- iTerm2筆記筆記
- 論文筆記(2)筆記
- python筆記2Python筆記
- 盜墓筆記2筆記
- 閱讀筆記2筆記
- 讀書筆記2筆記
- Objective-C學習筆記---建構函式和解構函式Object筆記函式
- 22javascript筆記(2)JavaScript筆記
- dart2筆記-類Dart筆記
- Vue學習筆記2Vue筆記
- MySQL學習筆記2MySql筆記
- RocketMQ學習筆記 2MQ筆記
- 設計模式筆記(2)設計模式筆記
- Hadoop筆記HDFS(2)Hadoop筆記
- Oracle學習筆記2Oracle筆記
- react學習筆記2React筆記
- FPGA讀書筆記2FPGA筆記