OC語言細節總結

2021-06-27 11:37:56 字數 1269 閱讀 8166

1. 

oc中物件命名都是以指標的形式,因為oc中物件是不能壓棧的!所以,不能定義乙個物件,只能定義乙個指向物件的指標。oc中的物件都是存在於堆中的,用乙個指標指向該空間。因為在壓棧的時候需要知道物件的大小,而在oc中繼承關係是在執行的時候才關聯的,所以程式在編譯的時候不知道壓棧空間為多大。像c++,它是靜態語言,在編譯的時候就會關聯繼承關係,所以c++中物件都是壓棧的。同樣,在oc中sizeof巨集是不能計算物件大小的,因為該巨集是在預編譯的時候計算大小的,這個時候物件大小是沒法獲得的,但是在c++中可以。這也是c++編譯比oc慢很多的原因!

2. oc中陣列和字典儲存的都是物件的位址,有些物件的位址可能會存在多個字典或者陣列中,當在乙個當中改變物件的值的時候,另乙個陣列或者字典中物件的值也會發生改變。

3. [屬性 @property,@synthesize簡析]

@property關鍵字

//宣告乙個屬性,相當於宣告了下面兩個方法

@property nsstring * name;

//- (void)setname:(nsstring *)name;

//- (nsstring *)name;

@synthesize name = _name;(繫結set和get方法所操作的字段)

以前,需要這樣實現,如同實現了下面兩個方法

起,無需寫synthesize,自動實現下面兩個方法,會自動關聯名位_***的變數

//如果類中並沒有對應的變數,會自動生成相應的變數_***。

關鍵在於:假設你自己在類中宣告了乙個name欄位,這時類中會有兩個字段乙個是你自己建立的name,另乙個是屬性自己建立的_name欄位。如果你宣告的是name,可以這麼寫讓get和set方法操作的是name而不是_name(@synthesize

name = 

name

;),這樣類中只有乙個字段(name), 而不存在(_name)了。

4. 匿名類別作用:

<1>.宣告私有化的成員變數(替代方法:宣告在實現部分)

<2>.前置宣告私有化的成員方法(現在私有化的成員方法可以不前置宣告)

<3>.宣告私有化的屬性 5

. arc與非arc轉化

<1>.將不使用arc的**轉成arc**

edit —> refactor —> convert to arc

<2>.arc非arc混編

//同乙個工程中,部分檔案使用arc,部分檔案不使用arc。

build phase -----> complie source

-fno-objc-arc

C 語言細節總結

include intmain int int2 10 double double1 double double2 10 printf sizeof str1 d,sizeof str2 d r n sizeof str1 sizeof str2 printf sizeof int1 d,sizeo...

OC語言 OC語言基礎 類

1 oc檔案的擴充套件名為.m c 2 oc語言完全相容 c語言,即 oc語言中可以寫 c語言 3 oc語言也可以寫 c 語言,但是如果要寫 c 語言,則 oc擴充套件名為 mm 4 oc語言是在 c語言的基礎上增加了最小層的物件導向語言 型別oc語言 c語言關鍵字 基本上所有的都以 開頭 publ...

OC語言 OC語言基礎 類

一 oc語言基礎 1 oc檔案的擴充套件名為.m c 2 oc語言完全相容c語言,即oc語言中可以寫c語言 3 oc語言也可以寫c 語言,但是如果要寫c 語言,則oc擴充套件名為.mm 4 oc語言是在c語言的基礎上增加了最小層的物件導向語言 二 oc語言與c語言 三 1.import 與 incl...