Objective—C基礎學習總結,objectivec基礎
1. (1)面向過程:一種以事件為中心的編程思想 (2)物件導向:一種以對象為中心的編程思想 2.get和set是用來訪問和修改對象裡的屬性值 註:OC裡的命名規範,get方法名不需要加get首碼 eg: int age = [person getAge]; (false) int age = [person age];(true) 3. self是用來調用本類對象的執行個體變數和方法 super是用來盜用從父類繼承下來的方法 4.@property :為一個屬性自動產生get和set方法 5.類可以調用類方法,不可以調用執行個體方法,但可以通過建立對象來訪問執行個體方法 6.便利構造器:一種快速建立對象的方式,其本質是把初始化做了一次封裝,方便外接使用(即:init的同時進行賦值) 7. 單例模式:可以保證系統中一個類只有一個執行個體,並且該執行個體易於外界訪問,從而方便執行個體個數的控制,得到節約資源的作用。 (1)主要特點: ️一個類只有一個執行個體; ️必須自己建立這個執行個體; ️同時必須自行向整個系統提供這個執行個體. (2)實現角度: ️只提供私人的建構函式; ️類定義中含有一個該類的靜態私人對象; ️該類提供了一個靜態共有的函數用於建立或擷取他本身的靜態私人對象). 8.原廠模式:類似於互連網商業模式中的C2B 9.物件導向的三大特徵:封裝、繼承、多態 (1) ️繼承的作用:減少代碼的重複,減少程式的設計時間; ️多態定義:同一類型,多種表現形態 多態作用:解決冗餘,可擴充和可維護性強 註:多態的條件中必須存在繼承關係,子類重寫父類方法,父類聲明的變數指向子類 (2) OC中的類都是單繼承的 (3) 方法的重寫:️必須有繼承,️子類方法和父類方法的定義一樣 10.字串的長度使用length屬性來擷取; (1)擴充字元串: str1 = www str2 = baidu
stringByAppendingPathComponent——> www/baidu
stringByAppendingPathExtension——>www.bai
stringByAppendingString—->wwwbaidu
stringByAppendingFormat—->wwwbaidu
(2)數組中不能存放基礎資料型別 (Elementary Data Type) (3)集合是無序的,儲存的對象不允許重複出現 11.記憶體管理: 重點—————————————黃金法則————————————————————— 當對對象使用了alloc、retain、[mutable]copy時,則必須使用相對應的release或者autorelease ———————————————————————————————————————— (1)基礎資料型別 (Elementary Data Type)不需要記憶體管理(int,long,double,float,struct,char) (2)當一個所有者做了retain、alloc、copy操作時,則擁有了對象的所有權 當使用release,autorelease時,則釋放了對象的所有權 (3)️使用copy,alloc,new構造對象時,retainCount為1; ️調用對象的retain方法增加1retainCount,調用對象的release方法減少1retainCount ️當對象的retainCount為0時,delloc自動調用,自動釋放對象記憶體,否則分配給對象的記憶體將一直被佔用. (4)注意:屬性的記憶體管理 一個類有屬性聲明用了retain、copy,則必須在這個類的delloc方法中釋放屬性 (5)autoReleasepool ️對象將所有權交給最近的自動釋放,並由其全權管理 (嵌套使用自動釋放池) ️自動釋放池銷毀時,會對裡邊的所有對象發送一條release訊息 12.ARC自動引用計數管理記憶體 (1)不能使用releaseCoun屬性t列印引用計數 —————————————————————————————————— (2)累的delloc方法中不能再去調用[super delloc]; ———————————————————————————————— (3)一個堆記憶體是否被釋放,取決於__strong類型的棧指標是否為0,為0則釋放記憶體,與__weak指標無關 ,weak主要為了防止交叉引用(代理模式) (4)ARC的黃金法則:::只要還有一個變數(指標)指向對象,對象就會被儲存在記憶體中 (5)strong相當於retain,weak不允許在非ARC中使用 (6)在ARC中,delloc方法一般都不需要使用,because we can’t use release of object; (7)注意:在使用KVO和通知時,must在delloc方法中移除 (8)對某些檔案禁用ARC Build Phases ——>Comile Sources ——>選中檔案添加——> —fno—objc—arc (9)對哪些檔案使用ARC Build Phases ——>Comile Sources ——>選中檔案添加——> —fobjc—arc (10)X-xode自動轉換工具最好只是用一次,使用之前先備份代碼,備份代碼,備份代碼啊,否則後果不堪設想
13.類目、協議、擴充(擴充類的方法) (1)修改原始碼,建立此類的子類 (2)類目:️為現有的類添加一個或多個新的方法 ️可以被子類繼承 ️可以作為原始類的一部分,與原始類中的方法同級(為已有的類添加新的方法。(只能添加方法,不能添加執行個體變數)) 注意:️類目中只能寫方法,不能新增成員變數 ️同一個類可以添加多個類目,但不能重名 ️可以覆寫現有類的方法,但覆寫之後不能調用原始的方法 (3)延展:在類的實現檔案中定義的類目,延展是匿名的類目,定義私人的方法 就是定義自己的私人方法。(可以添加方法,或者執行個體變數) (4)協議:聲明了可以被其他類實現的方法,協議不是類,只是其他對象可以實現的介面 (5)instancetype和id異同點 相同點:都可以作為方法的傳回型別 不同點:️instancetype可以返回和方法所在類相同類型的對象,而id只能返回未知類型的對象, ️itancetype只能作為傳回值,不能像id一樣作為參數 14.KVC && KVO (1)KVC即:NSKeyValueCoding 一個非正式的協議,提供一種機制來間接訪問對象的屬性 KVO就是基於KVC實現的關鍵技術,keyValueObserve,他能觀察一個對象的KVC key Path 值得變化 (2)KVO的使用步驟: ️添加觀察者 ️接收監聽變更的方法:監聽方法會在屬性的值發生變化的時候自動調用 (3)通知: //擷取通知中樞 +(NSNotificationCenter) ////發送通知 -(void)postNotification:(NSNotification*)notification