IOS學習筆記 OC(一)類與物件

2021-08-20 12:50:02 字數 4074 閱讀 5656

#import 

int main(int argc, const

char * argv)

return

0;}

1.oc相對於c

在c的基礎上新增了一小部分物件導向的語法

將c的複雜語法封裝的更為簡單

oc完全相容c語言

在c語言的基礎上新增了一小部分物件導向的語法

2.oc程式的原始檔的字尾名是.m m代表message 代表oc中最重要的1個機制—–訊息機制;

c程式的原始檔字尾名是.c

3.main函式仍然是oc程式的入口和出口

int型別的返回值 代表程式的結束狀態

main函式的引數:仍然可以接受使用者在執行程式的時候傳遞資料給資料,引數也可以不要

4.#import指令

a.以#號開頭,是乙個預處理指令

b.作用:是c語言#include指令的增強版,將檔案的內容在預編譯的時候拷貝到指令的地方

c.增加之處:同乙個檔案無論#import多少次,只包含一次

如果#include指令要實現這個效果,就必須要配合條件編譯指令來實現,而#import指令只需要直接包含就可以,其他什麼都不用做

d.簡要原理:#import指令在包含檔案的時候,底層會先判斷這個檔案是否被包含 如果被包含就會略過,否則才會包含

5.框架

a.是乙個功能集

b.foundation框架

foundation:基礎,這個框架中提供了一些最基礎的功能(輸入輸出,一些資料型別)

6.@authoreleasepool 是自動釋放池

7.nslog函式

a.作用:是printf函式的增強版,向控制台輸出資訊

b.語法:nslog(@」要輸出的資訊」)

c.增加之處:1.輸出一些除錯資訊

2.會自動換行

3.oc中其實還新增了一些資料型別,nslog不僅僅可以輸出c資料型別變數的值還可以輸出oc中新增的資料型別的值

d.使用注意:1.nslog函式的第乙個引數前必須加乙個@符號

2.如果在字串的末尾加了個『\n』代表換行,那麼函式的自動換行就會失效

8.字串(nsstring)

a.專門用來儲存oc字串的位址

b.oc的字串常量必須要使用乙個字首@符號:

「啦啦啦」 這是乙個c語言的字串

@「啦啦啦」 這是乙個oc的字串常量

nsstring 型別的指標變數只能用來儲存oc字串的位址

c.語法:nsstring *str=@」啦啦啦」

d.注意:1.nslog函式的第乙個引數是乙個oc字串,所以nslog函式的第乙個實參應該以@符號開頭

2.如果要使用nslog函式輸出oc字串的值,那麼要佔位符%@,而不是c語音中的%s

9.@符號

a.將c字串轉換成oc字串

b.oc當中的絕大部分的關鍵字都是以@符號開頭

10.函式定義和呼叫

與c語言一樣

11.oc程式和c程式各個階段的字尾名對比

原始檔 目標檔案 可執行檔案

c .c .o .out

oc .m .o .out

12.oc中的資料型別

a.oc中支援c語言中的多有資料型別

1.基本資料型別(int double float char ….)

2.構造型別(陣列 結構體 列舉 …)

3.指標型別( int *p1;)

4.空型別(void)

5.typedef自定義型別

b.bool型別

1.可以儲存yes或no中的任意乙個資料

2.一般情況下bool型別的變數用來儲存條件表示式的結果

3.bool本質

typedef signed char bool;

實際上bool型別的變數是乙個有符號的char變數

#define yes ((bool)1)

#define no ((bool)0)

yes 實際上就是1

no 實際上就是0

c.boolean

1.boolean型別的變數可以儲存true或false

2.一般情況下bool型別的變數用來儲存條件表示式的結果

d. class型別 類

e. id型別 萬能指標

f. nil 與null差不多

g.sel 方法選擇器

h. block **段

13.如何定義類

a.語法:

1.位置:直接寫在原始檔之中,不要寫在main函式之中

2.類的定義分為兩個部分:

a.類的宣告:

@inte***ce 類名 nsobject

//功能就是1個方法,將方法的宣告寫在這

@end

b.類的實現:

@implementation 類名

講方法的實現寫在這

@end

3.注意

a.類必須要有宣告和實現

b.類名用你描述的事物的名稱來命名,類名的每乙個單詞的首字母必須大寫

c.為類定義屬性的時候,屬性的名詞必須以_開頭

d.類是無法直接使用的

14.物件

a.建立語法:

類名 *物件名 = [類名 new]

person *p1=[person new]

b.特點:可以直接使用

類中定義的東西,物件裡都有,不會多不會少

c.使用:

訪問物件的屬性:

1.預設情況下,物件的屬性是不允許被外界訪問的。如果允許物件的屬性被外界訪問,則在宣告屬性的時候加@public關鍵字

訪問物件的屬性方式:

物件名->屬性名=值;

(*物件名).屬性名

15.類無參方法:

a. 宣告:

1.位置:在@inte***ce的大括弧外面

2.語法:

- (返回值型別)方法名稱;

-(void)run;//表明宣告了乙個無引數無返回值的方法run

b.實現:

1.位置:在@implementation之中實現

2.實現的方法:

將方法的宣告拷貝到@implementation之中,去掉分號,追加大括弧一對,將方法的實現的**寫在大括弧中

3.呼叫:

a.方法是無法直接呼叫的,因為雷不能直接使用,必須先建立物件,那麼這個物件中就有類中的屬性和方法了,就可以呼叫物件的方法了;

b.呼叫物件的方法:

[物件名 物件方法];

16.類帶1個引數方法

a. 宣告:

1.位置:在@inte***ce的大括弧外面

2.語法:

-(返回值型別)方法名:(引數型別)形參名稱;

-(void)eat:(*nsstring)foodname;

3.實現:

將方法的宣告拷貝到@implementation之中,去掉分號,追加大括弧一對,將方法的實現的**寫在大括弧中

4.呼叫:

[物件名 方法名:實參]

17.類帶多個引數方法

a. 宣告:

1.位置:在@inte***ce的大括弧外面

2.語法:

-(返回值型別) 方法名:(引數型別)形參 :(引數型別)形參2 …

-(int)sum:(int)num1 :(int)num2

3.實現:

將方法的宣告拷貝到@implementation之中,去掉分號,追加大括弧一對,將方法的實現的**寫在大括弧中

4.呼叫:

[物件名 方法名:實參1 :實參2….]

18.帶引數的方法宣告規範:

a.如果方法只有1個引數,要求最好這個方法的名字叫做 ***with

b.如果方法有多個引數,建議這個方法名稱:

方法名with:(引數型別)引數名稱 and:(引數型別)引數名稱 ..

-(int)sumwith:(int)num1 and:(int)num2;

C 學習(一) 類與物件

大二時學校開過物件導向程式設計 c 語言 的課,使用的是清華大學出版社,李愛華 程磊主編的教材。近兩年在學習和專案中一直使用c,對於c 已經忘記得差不多了。如今大四畢業之際開始學習qt開發上位機,需要用到c 使用原教材再次學習一次。類與物件是c 中兩個基本的概念。可以理解類是資料型別,物件是類定義的...

一 類與物件

物件的儲存細節 程式啟動,先把程式載入到 區。系統自動建立乙個類物件,載入類中的物件方法列表。當通過乙個類建立物件時,先在堆中開闢一塊儲存空間給物件p,再初始化物件的各屬性為0,最後返回乙個位址儲存到棧中 區域性變數接收 物件的第0個屬性是系統建立的isa指標,指向建立該物件的類。類方法只能類呼叫,...

C 學習筆記(一) 類

c 使用關鍵字 class 來定義類。其基本結構如下 class myclass 定義這樣乙個類後,就可以在能訪問該定義的工程的其他地方對該類進行例項化。預設情況下,類宣告為內部的,即只有當前工程中的 才能訪問它。可以用internal 訪問修飾符關鍵字顯式指定,但這不是必須的,類在定義時預設為此型...