管理範圍:
管理任何繼承nsobject的物件,對其他的基本資料型別無 效
本質原因是因為物件和其他資料型別在系統中的儲存空間不一樣,其它區域性變數主要存放於 棧中,而物件儲存於堆中,當**塊結束時這個**塊中涉及的所有區域性變數會被**,指 向物件的指標也被**,此時物件已經沒有指標指向,但依然存在於記憶體中,造成記憶體洩 露。
記憶體管理的原則
1)原則
只要還有人在使用某個物件,那麼這個物件就不會被**; 只要你想使用這個物件,那麼就應該讓這個物件的引用計數器+1; 當你不想使用這個物件時,應該讓物件的引用計數器-1;
2)誰建立,誰release
(1)如果你通過alloc,new,copy來建立了乙個物件,那麼你就必須呼叫release或者 autorelease方法
(2)不是你建立的就不用你去負責
3)誰retain,誰release
只要你呼叫了retain,無論這個物件時如何生成的,你都要呼叫release
4)總結
有始有終,有加就應該有減。曾經讓某個物件計數器加1,就應該讓其在最後-1.
1)空指標:沒有指向任何東西的指標,給空指標傳送訊息不會報錯 關於nil和nil及null的區別:
nil: a null pointer to an objective-cobject. ( #define nil ((id)0) ) nil 是乙個物件值。
nil: a null pointer to an objective-cclass.
null: a null pointer toanything else. ( #define null ((void *)0) ) null是乙個通用指標(泛型指標)。
nsnull: a class defines a singleton object used to representnull valuesin collection objects (which don't allow nil values).
[nsnull null]: the singleton instance of nsnull.
[nsnull null]是乙個物件,他用在不能使用nil的場合。
@property
@property int age; 1)生成乙個_age 2)生成get和set方法的宣告 3)生成 get和set方法的實現
@property (......) int age;
1)記憶體管理相關引數
retain:對物件release舊值,retain新值(適用於oc物件型別) assign:直接賦值(預設,適用於非oc物件型別) copy:release舊值,copy新值
驗證assign如果作用在物件上,實際上就是直接賦值 //使用@property增強型 生成get和set方法
@property(nonatomic,assign)car *car; /*
.m檔案中實際上生成的是
_car = car; //當物件release後,將無法使用該物件
@property 引數(二)
1)是否要生成set方法(若為唯讀屬性,則不生成)
readonly:唯讀,只會生成getter的宣告和實現 readwrite:預設的,同時生成setter和getter的宣告和實現
2)多執行緒管理(蘋果在一定程度上遮蔽了多執行緒操作)
nonatomic:高效能,一般使用這個 atomic:低效能,預設
3)set和get方法的名稱
修改set和get方法的名稱,主要用於布林型別。因為返回布林型別的方法名一般以is開頭,修改名稱一般用 在布林型別中的getter。
@property(nonatomic,assign, setter=abc:,getter=haha)int age 可以理解為把[psetage:]------>[pabc:], [page] --------->[phaha];
@property(nonatomic,assign, setter=setvip:,getter=isvip) bool vip;
property的記憶體管理
1.set方法記憶體管理相關的引數 retain release舊值,retain新值 適用於oc物件型別 assign 直接賦值 預設,適用於非oc物件型別 copy release舊值,copy新值 2.是否要生成set方法 readwrite 同時生成setter和getter的宣告 實現 預...
範圍管理和範圍蔓延
1 範圍管理的前提 前提是專案的定義。專案是企業哪個戰略方向下的產物,專案想完成哪些具體目標?只有定義明確了,才有範圍。範圍必須緊密圍繞著定義來開展。範圍不足或範圍蔓延都會對專案產生影響 1 範圍管理包括了兩部分 一部分是實體的產品,比如開發出來的一套軟體 另一部分是專案的商業方案 銷售方案 服務體...
範圍管理和範圍蔓延
1 範圍管理的前提 前提是專案的定義。專案是企業哪個戰略方向下的產物,專案想完成哪些具體目標?只有定義明確了,才有範圍。範圍必須緊密圍繞著定義來開展。範圍不足或範圍蔓延都會對專案產生影響 2 範圍管理包括了兩部分 一部分是實體的產品,比如開發出來的一套軟體 另一部分是專案的商業方案 銷售方案 服務體...