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...