alloc new retain之後都必須要呼叫release方法 計數器要變只有這幾種方法 retain release alloc new copy方法才會使計數器改變,誰想用人家物件,就對他進行retain操作,但在dealloc釋放本物件的時候也釋放引用的物件,先釋放引用的物件,然後釋放自己,
記憶體管理做到」誰汙染誰治理「,誰呼叫誰retain,是銷毀 也要銷毀retain的物件
當自己手動寫get和set方法的時候,系統就不會幫我們生成synthesize,就不會自動產生下劃線物件,所以在手動寫get和set方法的時候如果用到下劃線欄位就會報錯
excu_bad_access就是野指標錯誤,訪問了乙個不屬於你的記憶體空間
單例中千萬不能寫dealloc方法
assign:相當於str=str+1,是潛拷貝。對基礎資料型別,(nsinteger,cgfloat)和c資料型別(int,float,
double,char,等等)
copy:對nsstring
retain:對其他nsobject和其子類
assign:相當於str=str+1,是淺拷貝。對基礎資料型別,(nsinteger,cgfloat)和c資料型別(int,float,
double,char,等等)
copy:對nsstring
retain:對其他nsobject和其子類
nsmutablestring *str1 = [nsmutablestring stringwithstring:@"mmmmmm"];
nsstring *str2 = [str1 copy]; //拷貝乙份出來,如果不用copy的話,後面對str1進行修改,那麼也會影響str2的賦值
[str1 release];
nslog(@"%@",str2);
用點語法,引用計數器就加1
-(id)initwithcoder:(nscoder *)adecoder
return self; }
retain:
-(void)setname:(nsstring *)name }
[stu release];
[stu release]; //野指標(會報錯) 野指標指指向的內容不屬於你的
stu = nil;//指將指標所指向的那條線給擦掉
[nil release]; //空指標(不報錯) 空指標指指向的線斷了,等於不指向什麼記憶體空間
@class student 在子類中申明student是乙個類,就不需要寫@import "student.h",因為那樣會降低效能,import相當於把所有的標頭檔案都拷貝過去了,在.m檔案中寫@import "student.h",因為.m檔案中真正要使用student的那些方法。
@class有些功能 @import是做不到的 當兩個類相互包含的時候,相互@import的時候就會出錯,但@class相互包含就不會報錯,只是什麼這是乙個類,如果有上百個類都要引用student這個類,那麼用@import的話,只要student類中有一點點改變,這些都要重新
編譯,所以還是用@class比較好
標準的set方法(也就是retain的內部實現機制)
-(void)setbook:(book*)book
標準的dealloc方法
-(void)dealloc
標準的初始化方法
- (id)initwithage:(int)age
return self; }
然後建立物件:
student *stu = [student alloc] initwithage:22];
stu.name = @"dingxiaowei";
nslog(@"%@",stu);
[stu release];
@class student 在子類中申明student是乙個類,就不需要寫@import "student.h",因為那樣會降低效能,import相當於把所有的標頭檔案都拷貝過去了,在.m檔案中寫@import "student.h",因為.m檔案中真正要使用student的那些方法。
@class有些功能 @import是做不到的 當兩個類相互包含的時候,相互@import的時候就會出錯,但@class相互包含就不會報錯,只是什麼這是乙個類,如果有上百個類都要引用student這個類,那麼用@import的話,只要student類中有一點點改變,這些都要重新編譯,所以還是用@class比較好
category能夠動態給某個類動態的拓展方法,但不能新增屬性
用category建立的分類,@inte***ce student(test),類名後面如果有括號代表分類名稱,如果後面有冒號,則代表繼承,分類也要import匯入要拓展的.**件,但不能用@class,因為要對那個累拓展方法,所以要@import複製出有哪些方法,才能防止申明重複的同名方法
alloc new copy 是深拷貝,retain是淺拷貝
autorelease不是立即釋放,是等到程式結束的時候將每個物件釋放一次
OC語言注意事項
方法 1.物件方法都是以減號 2.物件方法的宣告必須寫在 inte ce和 end之間 物件方法的實現必須寫在 implementation和 end之間 3.物件方法只能由物件來呼叫 4.物件方法歸類 物件所有 函式1.函式能寫在檔案中的任意位置 inte ce和 end之間除外 函式歸檔案所有 ...
OC語言注意事項一
import 與 include 的區別 在c語言中,我們想要讓編譯器複製一些標頭檔案到現在的原始檔,俗稱引入標頭檔案,或者包含標頭檔案,使用 include。例如有三個單獨沒有聯絡的標頭檔案firstfloor.h,secondfloor.h,thirdfloor.h,現在secondfloor....
oc語言注意事項五
在oc裡也有構造方法,initwith 用來初始化建立的物件。在使用initwith 方法的時候,一定要記得加上元祖類nsobject的初始化方法 init id initwith return self 這是oc裡面初始化固定模式,和其他物件導向語言的初始化物件不一樣。其實在oc裡面,物件的初始化...