原创 stong weak assign copy

oc內存模型 a指針、b內存地址、c內存地址裏面的值、、、、、a在棧中,b在堆中 a指向b ,b中保存着c 引用計數是針對b而言的,當b的引用計數爲零時b就會被系統收回 property中 strong weak assign copy

原创 指針和指針變量

指針就是內存首地址 指針變量就是存放內存首地址的變量

原创 static const extern

static 一般多用於僅限於當前文件 創建常量 const不可改變修飾符 const 放在*前修飾的內存中的值 const放在*後修飾的指針指向的地址 例:extern NSString *const name; h          

原创 autoreleasepool

自動釋放池排布在棧中,對象收到autorelease消息後,系統會將其放在最頂端的池裏。 合理運用自動釋放池,可降低應用程序的內存峯值。 @autoreleasepool這種新式些法能創建出更爲輕便的自動釋放池。

原创 懸掛指針

一般調用完release之後都會清空指針,這樣就能保證不會出現指向無效對象的指針了,這種指針通常稱爲“懸掛指針” 例如[person release] person = nil;

原创 對象 消息 運行期

objc_msgSend 某對象調用方法其實質就是給某對象發送消息(invoke a message) 給對象發送消息都要由動態消息派發系統(dynamic message dispath)來處理,該系統會查出對應的方法,並執行其代碼。

原创 屬性存取方法中的內存管理

例如 strong -(void)setobj:(id)obj{ [obj retain]; [obj release]; _obj = obj; } 先後順序尤爲重要 如果先release則會造成懸掛指針

原创 arc注意事項

arc只負責管理oc對象的內存,corefoundation對象不歸arc管理,開發者必須適時調用cfrelease/cfretain

原创 類對象

對象 typedef struct objc_object { Class isa; } *id; 類對象 typedef struct objc_class *Class; struct objc_class { 類方法定義在這裏,可以

原创 runtime-添加關聯屬性-方法調配

添加關聯屬性常用於分類添加屬性 方法調配常用於給已有類更改方法或者是交換方法  

原创 類的全能初始化方法

在類中提供一個全能初始化方法,其他初始化方法均應調用此方法。 若全能初始化方法和超類不同,則需覆寫超類中的對應方法 如果超類中的初始化方法不適用於子類,那麼應該覆寫這個超類方法,並在其中拋出異常。

原创 關於蘋果設備唯一標示uuid

UDID被棄用,使用UUID來作爲設備的唯一標識。獲取到UUID後,如果用NSUserDefaults存儲,當程序被卸載後重裝時,再獲得的UUID和之前就不同了。使用keychain存儲可以保證程序卸載重裝時,UUID不變。但當刷機或者升

原创 xcode9 利用xcodebuild導出ipa

#清理項目 xcodebuild clean -workspace 項目名稱.xcworkspace -scheme 項目名稱 -configuration release/debug   #生成archive xcodebuild ar