OC語言大總結?

  • 版權聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉載。
  • 根據(jù)OC學習的知識點,總結了一下,希望能幫到大家!

第一節(jié) 類與對象

知識點 注意事項
面向對象編程 OOP(Object Oriented Programming)
面向對象語言 C++,JAVA,C#,OC,Swift
概念 類,對象,封裝,繼承,多態(tài)...
面向過程編程 分析解決問題的步驟,實現(xiàn)函數(shù),依次調(diào)用
面向對象編程 分解問題組成的對象,協(xié)調(diào)對象間的聯(lián)系和通信,解決問題.
面向過程以過程為編程中心,面向對象以對象為編程中心.
面向對象編程設計 1.分析涉及到的對象.2.根據(jù)功能定義類.3.使用對象的功能完成程序
類和對象 1.類和對象是面向對象的核心.2.類是對象的類型.3.對象是類的實例.4.萬事萬物皆對象.
OC中類的定義 1.面向對象編程中使用對象完成程序.2.開發(fā)中:先定義類,再創(chuàng)建對象,然后適用對象.3.定義類包含兩部分:接口部分和實現(xiàn)部分.分開寫(1.接口部分:對外聲明類的特征和行為.2.實現(xiàn)部分:對內(nèi)實現(xiàn)行為.)
接口部分 1.接口部分標志:@interface...@end2.作用:聲明類的實例變量(特征)和方法(行為).3.包含內(nèi)容:類名,父類名,實例變量,方法等.
實現(xiàn)部分 1.實現(xiàn)部分標志:@implementation...@end.2.作用:實現(xiàn)方法,即實現(xiàn)類的行為.
類和文件 .h稱為接口文件或頭文件,.m稱為實現(xiàn)文件
創(chuàng)建對象 1.創(chuàng)建對象分兩步:分配內(nèi)存空間和初始化.2.分配內(nèi)存空間:根據(jù)類中聲明的實例變量為對象分配內(nèi)存,并返回首地址.3.初始化:為對象的實例變量設置初始值.
+(id)alloc;(+,表示這個方法屬于類,只能類執(zhí)行,id返回值類型,表示任意類型的對象) -(id)int;-表示這個方法屬于對象,只能對象執(zhí)行.id返回值類型,表示初始化完成的對象.
使用對象 指針存儲對象的首地址,代指對象.
簡單方法 OC中的方法分兩種:類方法和實例方法.
類方法 只能類使用.例如:+(id)alloc,注意:類方法中不能使用實例變量.
實例方法 只能對象使用,例如-init
setter和getter 為實例變量賦值方法稱為setter,讀取實例變量的方法稱作getter(訪問器);

第二節(jié) 繼承、初始化方法、遍歷構造器

知識點 注意事項
繼承 面向對象的語言提供了繼承語法,能夠大大簡化代碼,把公共實例變量和方法寫在父類里,子類只需要寫自己獨有的實例變量和方法.繼承即能保證類的完整,又能簡化代碼.父類可以有多個子類,子類只可以有一個父類.OC里邊繼承是單向的,不能相互繼承.繼承具有傳遞性,子類能繼承父類全部的特征和行為.
繼承的特點 OC只允許單繼承.沒有父類的類稱為根類,OC中的根類是NSobject.如果父類的方法不滿足子類的需求,子類可以重寫父類的方法.繼承具有傳遞性
繼承中方法的執(zhí)行 逐級向上,找到就執(zhí)行,找不到就崩潰
super 1.super是編譯器指令,并非類或者對象.2.作用:給super發(fā)消息,執(zhí)行父類中對應的方法.3.子類可以重寫父類的方法,子類既可以有自己的實現(xiàn),又有父類繼承中的實現(xiàn),如果想使用父類的實現(xiàn),需要向super發(fā)消息.
初始化方法 1.創(chuàng)建對象分兩步:分配內(nèi)存,初始化.2.初始化方法的主要作用是:為某些實例變量賦值.3.初始化方法在整個對象生命周期里只使用一次.3.父類中聲明了公共的實例變量.作為父類也應該有自己的初始化方法,為這些公共實例變量賦初值.4.子類定義了除父類公共實例變量外的實例變量,在自身的初始化方法中,優(yōu)先向super發(fā)送init消息,初始化公共變量,初始化成功后,再初始化自身特有變量,從而完成自身全部實例變量的初始化.
初始化過程 1.執(zhí)行父類中實現(xiàn)的初始化方法(向上遞歸到NSObject類中的初始化方法).2.從根類NSObject開始執(zhí)行初始化方法3.判斷父類中的初始化是否成功,即self是否存在.4.完成對象的初始化設置,返回對象.5.初始化子類實例變量.
初始化方法特征 1.初始化方法是”—”號方法.2.以init開頭.3.可以帶0到多個參數(shù).4.返回值是id或者instancetype類型.5.內(nèi)部實現(xiàn):先執(zhí)行super的初始化方法,再初始化自身變量,最后return self
便利構造器 1.便利構造器在初始化方法的基礎上前進了一小步,封裝了對象的創(chuàng)建過程.2.便利構造器以”+”方法,返回本類型的實例對象,方法名以類名開頭.3.可以有0到多個參數(shù).4.內(nèi)部實現(xiàn):封裝了alloc和初始化方法,使用起來更加方便.

第三節(jié) 屬性

日期 任務
setter和getter方法 setter是賦值方法,getter是取值方法
屬性 屬性是Objective-C 2.0定義的語法為實例提供了setter和getter方法的默認實現(xiàn),能在一定程度上簡化程勛代碼,并且增增強實例變量的訪問安全性
屬性的聲明 使用@property聲明屬性,相當于在@interface里聲明了兩個方法(setter和getter)
屬性的實現(xiàn) 使用@synthesize實現(xiàn)屬性,相當于在@implementation中實現(xiàn)了兩個方法setter和getter
屬性的屬性 為屬性提供了一些關鍵字用以控制setter,getter的實現(xiàn)細節(jié),這些關鍵字稱為屬性的屬性(attribue),一共有三大類attribue
第一類:讀寫性控制(readonly,readwrite)readonly只聲明getter方法,無setter方法,readwrite告訴編譯器即聲明setter又聲明getter
nonatomic 程序開發(fā)過程中,setter和getter處處都在用,如果使用atomic,需要不斷地隊setter,getter加鎖解鎖以保證線程訪問安全,會很占用系統(tǒng)資源,降低系統(tǒng)性能.通常設置為nonatomic,某些屬性需要線程安全時,才定義為atomic
屬性的屬性 第三類:語義設置assign,retain,copy,使用assign修飾屬性時,setter,getter內(nèi)部實現(xiàn)是直接賦值
點語法 點語法是Objective-C 2.0定義的語法格式,提供了一種便捷的屬性訪問方式.凡是符合系統(tǒng)默認setter,getter書寫格式的方法都可以使用點語法

第四節(jié) 字符串與數(shù)值對象

知識點 注意事項
蘋果幫助文檔的使用(文檔的基本信息) Inherits from 繼承自; Conforms to 遵循什么協(xié)議; Framework 屬于哪個框架 ; Availability 什么時候可用的; Declared in 聲明在什么頭文件里 ; Related documents 相關文檔; Sample code 示例代碼
字符串 c語言中,字符串是由char(ASCII)字符構成。 oc中,字符串是由unichar(unicode)字符構成 oc中,字符串分為不可變字符串和可變字符串。 不可變字符串一經(jīng)創(chuàng)建,內(nèi)容和長度不可修改 可變字符串創(chuàng)建之后,長度和內(nèi)容可修改。
不可變字符串的創(chuàng)建 實例方法:-initWithString: -initWithFormat: 便利構造器: +stringWithString: +stringWithFormat:
字符串的常用方法 字符串分割 ;字符串拼接;字符串替換;字符串比較
字符串分割 字符串分割: -substringToIndex: -substringFromIndex: -substringWithRange:
字符串拼接 字符串拼接: -stringByAppendingString:
字符串替換 字符串替換:-stringByReplacingCharactersInRange:withString:-stringByReplacingOccurrencesOfString:withString:
字符串比較 -isEqualToString:
可變字符串(NSMutableString) NSMutableString繼承于NSString NSMutableString創(chuàng)建出來的字符串,是 一個動態(tài)的可變字符串,可以對其進行增 刪改查.
可變字符串(NSMutableString)的創(chuàng)建 實例方法:- initWithFormat: -initWithString: 便利構造器: +stringWithFormat:+stringWithString:
NSMutableString的方法 字符串拼接 -appendString: 字符串插入-insertString: atIndex: 字符串刪除-deleteCharactersInRange:
字符串小結 不可變字符串的修改操作,本質就是得到一 個新的字符串。 不可變字符串的修改方法以string開頭,有 返回值。 可變字符串的修改方法沒有返回值,修改原 字符串。
數(shù)值對象的作用 數(shù)值對象可以完成標量(int,float,結構體, 指針等)與對象類型的相互轉換。
數(shù)值對象(NSNumber)常用方法 基本類型(int,float)轉換成對象類型; 對象類型轉換成基本類型(int ,float)。 +numberWithInt: +numberWithDouble: -intValue -doubleValue
數(shù)值對象(NSValue)常用方法 NSValue是NSNumber的父類 結構體轉換為NSValue 類型對象 NSValue類型對象轉換為結構體 +valueWithRange: +valueWithPointer: - rangeValue - pointerValue

第五節(jié) 數(shù)組、字典、集合

知識點 注意事項
容器簡介 容器類,管理一組對象類型的數(shù)據(jù).iOS中存放數(shù)據(jù)的容器類都稱為集合
數(shù)組簡介 OC中數(shù)組是有序集合,只能存放對象類型;數(shù)組有下標(index)的概念,靠下標查找元素,下標從0開始;數(shù)組分不可變數(shù)組(NSArray)和可變數(shù)組(NSMutableArray).
不可變數(shù)組 數(shù)組的創(chuàng)建;獲取數(shù)組元素個數(shù);根據(jù)index獲取數(shù)組中對象;
不可變數(shù)組(NSArray)的創(chuàng)建 常用實例方法:—initWithObjects:常用便利構造器:+arrayWithObjects:
獲取元素個數(shù),根據(jù)index獲取對象 獲取元素個數(shù): -count根據(jù)index獲取對象: -objectAtIndex:
可變數(shù)組(NSMutableArray) NSMutableArray是NSArray的子類,繼承了NSArray的所有方法可變數(shù)組可以在數(shù)組本身基礎進行增,刪,改,查等操作.常用方法:創(chuàng)建數(shù)組對象;添加元素,插入元素;刪除元素,替換元素;交換指位置的兩個元素;
(可變數(shù)組)NSMutableArray的創(chuàng)建 實例方法: - initWithCapacity:- initWithObjects: 便利構造器:+ arrayWithCapacity:+ arrayWithObjects:
添加元素,插入元素 添加元素:- addObject:插入元素:- insertObject:atIndex:
刪除元素,替換元素 刪除元素:- removeObjectAtIndex:- removeLastObject:- removeAllObjects:替換元素:- replaceObjectAtIndex:withObject:
交換指定位置的兩個元素 - exchangeObjectAtIndex:withObjectAtIndex:
數(shù)組的遍歷 數(shù)組的遍歷:將數(shù)組從頭到尾全部篩選一遍;通常結合for循環(huán)使用,有多少元素就循環(huán)多少次;快速遍歷for—in
字典簡介 對于”name:小三”來講,key就是”name”,key對應的value是”小三”;字典用于保存具有映射關系(key-value對)數(shù)據(jù)的集合;一個key-value對認為是一個條目(Entry),字典是存儲key-value對的容器
字典特點 與數(shù)組不同,字典靠key存取元素;key不能重復,value必須是對象;鍵值對在字典中是無序存儲的;字典分:不可變字典(NSDictionary)和可變字典(NSMutableDictionary)
不可變字典(NSDictionary) 不可變字典一旦創(chuàng)建,鍵值對就不可更改,不可添加,不可刪除.不可變字典僅能被讀取key或者value常用方法:創(chuàng)建字典對象獲取所有key值,獲取所有value值通過key值查詢value
不可變字典(NSDictionary)的創(chuàng)建 實例方法:initWithObjectsAndKeys:便利構造器:+ dictionaryWithObjectsAndKeys:
獲取所有的key和value,通過key查詢value 獲取所有key:allKeys獲取所有value:allValue通過key查詢value:- objectForKey
可變字典(NSMutableDictionary) NSDictionary的子類可以對可變字典的鍵值對進行增,刪,改常用方法:創(chuàng)建可變字典對象添加鍵值對修改key對應的value刪除鍵值對
可變字典(NSMutableDictionary)的創(chuàng)建 實例方法:- initWithObjectsAndKeys:initWithCapacity:便利構造器:+ dictionaryWithObjectAndKeys:
添加,修改,刪除鍵值對 添加,修改鍵值對:setValue:ForKey:setObject:ForKey:刪除鍵值對:-removeObjectForKey:
字典的遍歷 遍歷allKeys遍歷allValues遍歷所有的鍵值對
集合 數(shù)學中有集合的的概念比如:整數(shù)集,自然數(shù)集.再比如:集合{1,2,3,4},集合{2,3,5,6}iOS中也有集合類與數(shù)學中的集合對應
集合的特點 與數(shù)學中的集合一樣,集合中的元素唯一存儲的元素是無序的存儲元素必須是對象類型iOS中用Set表示集合,分NSSet和NSMutableSet
不可變集合(NSSet) 常用方法:創(chuàng)建集合對象獲取元素個數(shù)獲取集合中的某個元素判斷集合中是否包含某個對象
不可變集合(NSSet)的創(chuàng)建 實例化方法: initWithObjects:便利構造器:+ setWithObjects:
獲取不可變集合(NSSet)的元素個數(shù)及某個元素 獲取元素個數(shù):count獲取某個元素:- anyObject
判斷集合是否包含某個元素 - containsObject:
可變集合(NSMutableSet) 常用方法:創(chuàng)建集合對象,添加元素,刪除元素
可變集合(NSMutableSet)的創(chuàng)建 實例化方法:initWithObjects:便利構造器:- setWithObjects:
可變集合(NSMutableSet)元素的添加,刪除 添加元素:addObject:刪除元素:- removeObject:
計數(shù)集合特點 NSCountedSet是NSMutableSet的子類能記錄元素的重復次數(shù)在set的基礎上添加了計數(shù)功能- countForObject:

第六節(jié) 遍歷

知識點 注意事項
數(shù)組的遍歷 NSArray *array = @[@“西游記”,@“三國演義”,@“紅樓夢”,@“水滸傳”];方法一:for循環(huán):for(int i = 0;i < array.count ;i ++){NSLog(@“%@”,array[i]);}方法二:枚舉器:NSEnumerator *enumerator = [array objectEnumerator];NSString *object = nil;while(object = [enumerator nextObject]){NSLog(@“%@”,object);}方法三:快速枚舉(for in):for(NSString *object in array){NSLog(@“%@”,object);}
字典的遍歷 NSDictionary *dictionary = @{@“name”:@“張三”,@“sex”:@“男”,@“age”:@“20”}方法一:for循環(huán):NSArray *array01 = [dictionary allKeys];for(int i = 0;i < array.count;i++){NSLog(@“%@—%@”,array[i],dictionary[array[i]]);}方法二:枚舉器:NSEnumerator *keyEnumerator = [dictionary keyEnumerator]; NSString *key = nil;while(key = [keyEnumerator nextObject]){NSLog(@“%@-%@”,key,dictionary[key]);}方法三:快速枚舉(for in):for(NSString *key in dictionary){NSLog(@“%@—%@”,key,dictionary[key]);}
集合的遍歷 NSSet *set = [NSSet setWithObjects:@“zhao”,@“qian”,@“sun”,@“l(fā)i”,nil];方法一:for 循環(huán):NSArray *array = [set allObjects];for(int i = 0; i< array.count;i++){NSLog(@“%@”,array[i]);}方法二:使用枚舉器:NSEnumerator *enumerator =[set objectEnumerator];NSString *object = nil;while(object = [enumerator nextObject]){NSLog(@“%@”,object);}方法三:快速遍歷(for in):for (NSString *object in set){NSLog(@“%@”,object);
for in 1.是 oc 的快速枚舉語法,內(nèi)部封裝了枚舉器。2.數(shù)組 for in枚舉的是數(shù)組元素.3.字典 for in枚舉的是字典中的 key,因為 key 是唯一的.4.集合 for in 枚舉的是集合中的元素;5.如果用 for in 來枚舉一個可變?nèi)萜?,不能在枚舉期間對容器做任何修改,即:不能添加,刪除等。如果需要在枚舉期間做修改,請使用普通for 循環(huán),而不要用 for in
不可變數(shù)組排序方法 排序方法:NSArray *array02 = [array01 sortedArrayUsingSelector:@selector(compareByNameAscending:)];構建排序描述器:NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@“name”ascending:YES]; NSArray * array02 =[array01 sortedArrayUsingDescriptor:@[descriptor,….]]
可變數(shù)組排序方法 排序方法:NSArray *array02 = [array01 sortUsingSelector:@selector(compareByNameAscending:)];構建排序描述器:NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@“name”ascending:YES]; NSArray * array02 =[array01 sortUsingDescriptor:@[descriptor,….]]
SEL 是你數(shù)組元素 元素與元素之間 的比較方法,如果數(shù)組是 person,就寫 person 與 person 的比較方法。如果數(shù)組是 string,就寫 string 與 string 的比較方法,如果數(shù)組是 teacher,就寫 teacher 與 teacher 之間的比較方法??傊?,數(shù)組元素是誰,就讓第 j 個元素與第 j+1個元素比,你讓它按年齡比,就給它比較年齡的方法,讓他按身高比,就給它比較身高的方法。
小結 1.官方推薦的排序方法:使用 NSSortDescriptor(描述器排序)進行排序。這種方式可以實現(xiàn)復雜排序,可以設置n個排序條件,下標0放第一排序條件,下標1放第二排序條件,以此類推。。。2.不可變數(shù)組也可以排序,只不過自身不會發(fā)生變化,會創(chuàng)建一個新的數(shù)組,存放排好序的元素,并把這個數(shù)組返回。3.可變數(shù)組可以對自身排序4.可變數(shù)組排序方法沒有返回值。方法名第一個單詞,是個動詞。
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 下面是我最近兩年學習OC中的一些基礎知識,對于學習OC基礎知識的人可能有些幫助,拿出來分享一下,還是那句話不喜勿噴...
    小小趙紙農(nóng)閱讀 2,822評論 1 7
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,843評論 0 4
  • 一、深復制和淺復制的區(qū)別? 1、淺復制:只是復制了指向對象的指針,即兩個指針指向同一塊內(nèi)存單元!而不復制指向對象的...
    iOS_Alex閱讀 1,530評論 1 27
  • 人們總說,人應該是越來越快樂的,因為能夠做越來越多曾經(jīng)無法辦到的。長大了,就能自由的生活;長大了,就能輕易得到曾經(jīng)...
    落落落離年閱讀 294評論 0 0
  • 第一次和蚊子見面是在我們學校北苑下邊。之前我們通了電話,我過去的時候就看到一個穿著白色羽絨服的女孩子,站在邊上。當...
    doovin閱讀 559評論 0 0

友情鏈接更多精彩內(nèi)容