日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OC2

發布時間:2025/3/17 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OC2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.局部變量和全局變量以及成員變量的區別

寫在類聲明的大括號中的變量, 我們稱之為 成員變量(屬性, 實例變量)

成員變量只能通過對象來訪問

注意: 成員變量不能離開類, 離開類之后就不是成員變量,成員變量不能在定義的同時進行初始化

存儲: 堆(當前對象對應的堆的存儲空間中)

存儲在堆中的數據, 不會被自動釋放, 只能程序員手動釋放

?

?

寫在函數和大括號外部的變量, 我們稱之為全局變量

作用域: 從定義的那一行開始, 一直到文件末尾

局部變量可以先定義在初始化, 也可以定義的同時初始化

存儲: 靜態區

程序一啟動就會分配存儲空間, 直到程序結束才會釋放

?

寫在函數或者代碼塊中的變量, 我們稱之為局部變量

作用域: 從定義的那一行開始, 一直到遇到大括號或者return

局部變量可以先定義再初始化, 也可以定義的同時初始化

存儲 : 棧

存儲在棧中的數據有一個特點, 系統會自動給我們釋放

?

2.函數和方法的區別

?1.函數屬于整個文件, 方法屬于某一個類

?方法如果離開類就不行

?2.函數可以直接調用, 方法必須用對象或者類來調用

?注意: 雖然函數屬于整個文件, 但是如果把函數寫在類的聲明中會不識別

?3.不能把函數當做方法來調用, 也不能把方法當做函數來調用

?

?方法的注意點:

?>方法可以沒有聲明只有實現

?>方法可以只有聲明沒有實現, 編譯不會報錯, 但是運行會報錯

?如果方法只有聲明沒有實現, 那么運行時會報:?

?reason: '+[Person demo]: unrecognized selector sent to class 0x100001140'

?發送了一個不能識別的消息, 在Person類中沒有+開頭的demo方法

?reason: '-[Person test]: unrecognized selector sent to instance 0x100400000'

?

?

?類也有一個注意點:

?類可以只有實現沒有聲明

?注意: 在開發中不建議這樣寫

?

3.常見錯誤:

1.只有類的聲明,沒有類的實現

2.漏了@end

3. @interface和@implementation嵌套

4.成員變量沒有寫在括號里面

5.方法的聲明寫在了大括號里面

6.成員變量不能在{}中進行初始化、不能被直接拿出去訪問

7.方法不能當做函數一樣調用

8.OC方法只能聲明在@interface和@end之間,只能實現在@implementation和@end之間。也就是說OC方法不能獨立于類存在

9.C函數不屬于類,跟類沒有聯系,C函數只歸定義函數的文件所有

10.C函數不能訪問OC對象的成員

11.低級錯誤:方法有聲明,但是實現的時候寫成了函數

12.OC可以沒有@interface同樣可以定義一個類

?

4.字符串基本使用

NSString使用

只需要在C語言字符串前面加上@符號, 系統就會自動將C語言字符串轉換為OC字符串

C語言中的字符串不是對象;OC中的字符串是一個對象

?

注意: 輸出C語言的字符串使用%s

? ? ? ? ? 輸出OC的字符串使用%@,? %@就專門用于輸出對象類型的

方法不能使用函數來實現, 方法是方法, 函數是函數

方法屬于一個類, 函數屬于一個文件

?

5.結構體作為對象的屬性

初始化結構體屬性

方法一:強制轉換

stu->_birthday = (Date){1986, 1, 15};

?? ?

方法二:定義一個新的結構體,給d賦值,將d賦值給_birthday

? ? Date d = {1986, 1, 15};

? ? stu->_birthday = d;

?

方法三:分別賦值

stu->_birthday.year = 1986;

stu->_birthday.month = 1;

stu->_birthday.day = 15;

?

6.對象作為方法的參數傳遞

7.對象作為方法的參數連續傳遞

?

8.#pragma mark 基本使用

//#pragma mark? 程序入口

?

9.對象作為返回值類型

注意:在企業級開發中千萬不要隨意修改一個方法

通過new創建出來的對象存儲在堆中,堆中的數據不會自動釋放

?

轉載于:https://www.cnblogs.com/micalafei/p/4774615.html

總結

以上是生活随笔為你收集整理的OC2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。