ios知識(shí)點(diǎn)總結(jié)(一)

基礎(chǔ)

1. @property 后面可以有哪些修飾符账千?
  • 原子性--- nonatomic 虾宇、atomic

在默認(rèn)情況下凤类,由編譯器合成的方法會(huì)通過鎖定機(jī)制確保其原子性(atomicity)扛稽。如果屬性具備 nonatomic 特質(zhì)柴灯,則不使用自旋鎖。請(qǐng)注意宣旱,盡管沒有名為“atomic”的特質(zhì)(如果某屬性不具備 nonatomic 特質(zhì)仅父,那它就是“原子的” ( atomic) ),但是仍然可以在屬性特質(zhì)中寫明這一點(diǎn)浑吟,編譯器不會(huì)報(bào)錯(cuò)笙纤。若是自己定義存取方法,那么就應(yīng)該遵從與屬性特質(zhì)相符的原子性买置。

  • 讀/寫權(quán)限---readwrite(讀寫)粪糙、readonly (只讀)
    實(shí)際上是決定是否生成setter、getter方法

  • 內(nèi)存管理語義---assign忿项、strong蓉冈、 weakunsafe_unretained轩触、copy

assign 直接賦值寞酿,常用于修飾基礎(chǔ)類型,如int脱柱,bool伐弹。修飾對(duì)象時(shí),引用計(jì)數(shù)不會(huì)+1榨为,會(huì)造成野指針惨好。
weak 直接賦值煌茴,ARC下修飾對(duì)象使用,引用計(jì)數(shù)不會(huì)+1日川,對(duì)象銷毀時(shí)蔓腐,會(huì)指向nil,不會(huì)造成野指針龄句。

Runtime維護(hù)了一個(gè)weak表回论,用于存儲(chǔ)指向某個(gè)對(duì)象的所有weak指針。weak表其實(shí)是一個(gè)hash(哈希)表分歇,Key是所指對(duì)象的地址傀蓉,Value是weak指針的地址(這個(gè)地址的值是所指對(duì)象指針的地址)數(shù)組。當(dāng)此對(duì)象的引用計(jì)數(shù)為0的時(shí)候會(huì) dealloc职抡,假如 weak 指向的對(duì)象內(nèi)存地址是a葬燎,那么就會(huì)以a為鍵, 在這個(gè) weak 表中搜索缚甩,找到所有以a為鍵的 weak 對(duì)象萨蚕,從而設(shè)置為 nil。

strong 直接賦值并且對(duì)象的retain count +1蹄胰,一般用于修飾對(duì)象。
copy 不會(huì)增加對(duì)象的 retain count奕翔,而是會(huì)重新復(fù)制一份對(duì)象裕寨,然后將指針指向新復(fù)制的對(duì)象。

NSString派继、NSArray宾袜、NSDictionary使用copy修飾,因?yàn)樗麄儠?huì)對(duì)應(yīng)可變的NSMutableString驾窟、NSMutableArray庆猫、NSMutableDictionary。假如有一個(gè)屬性是NSString類型的绅络,但是我們卻將一個(gè)NSMutableString賦值給了它(這是合法的)月培,如果我們使用strong關(guān)鍵字,那么現(xiàn)在這個(gè)對(duì)象是一個(gè)NSMutableString的對(duì)象恩急,如果在別的地方修改了這個(gè)對(duì)象的值杉畜,那么該屬性也跟著變了,這可能會(huì)帶來意想不到的后果衷恭。但如果我們使用copy關(guān)鍵字的話此叠,就不會(huì)存在這個(gè)問題了,因?yàn)樗鼤?huì)拷貝一份NSMutableString的值随珠,這時(shí)屬性依然是 immutable 的灭袁,即使NSMutableString的對(duì)象修改了也不會(huì)影響屬性的值猬错。

a、 對(duì)非集合類對(duì)象的copy操作:

[immutableObject copy] // 淺復(fù)制
[immutableObject mutableCopy] //深復(fù)制
[mutableObject copy] //深復(fù)制
[mutableObject mutableCopy] //深復(fù)制

b茸歧、集合類對(duì)象的copy與mutableCopy

[immutableObject copy] // 淺復(fù)制
[immutableObject mutableCopy] //單層深復(fù)制
[mutableObject copy] //單層深復(fù)制
[mutableObject mutableCopy] //單層深復(fù)制

NSString倦炒、NSArray、NSDictionary 使用copy與mutableCopy
  • 方法名---getter=<name> 举娩、setter=<name>
2. 面向?qū)ο笕筇匦?/h5>

封裝析校,繼承,多態(tài)

3. 成員變量跟屬性

關(guān)系:屬性是對(duì)成員變量的封裝铜涉,即 property = ivar+setter+getter

4. @synthesize和@dynamic分別有什么作用智玻?

@property有兩個(gè)對(duì)應(yīng)的詞,一個(gè)是 @synthesize芙代,一個(gè)是 @dynamic吊奢。如果 @synthesize和 @dynamic都沒寫,那么默認(rèn)的就是@syntheszie var = _var;
@synthesize 的語義是如果你沒有手動(dòng)實(shí)現(xiàn) setter 方法和 getter 方法纹烹,那么編譯器會(huì)自動(dòng)為你加上這兩個(gè)方法页滚。
@dynamic 告訴編譯器:屬性的 setter 與 getter 方法由用戶自己實(shí)現(xiàn),不自動(dòng)生成铺呵。(當(dāng)然對(duì)于 readonly 的屬性只需提供 getter 即可)裹驰。假如一個(gè)屬性被聲明為 @dynamic var,然后你沒有提供 @setter方法和 @getter 方法片挂,編譯的時(shí)候沒問題幻林,但是當(dāng)程序運(yùn)行到 instance.var = someVar,由于缺 setter 方法會(huì)導(dǎo)致程序崩潰音念;或者當(dāng)運(yùn)行到 someVar = var 時(shí)沪饺,由于缺 getter 方法同樣會(huì)導(dǎo)致崩潰。編譯時(shí)沒問題闷愤,運(yùn)行時(shí)才執(zhí)行相應(yīng)的方法整葡,這就是所謂的動(dòng)態(tài)綁定。

5. 如何將class定義一個(gè)對(duì)外只讀對(duì)內(nèi)可讀寫的屬性

.h文件中讥脐,屬性用readonly修飾遭居,.m文件使用readwrite修飾

6. public、private攘烛、protected的作用域

public:不受限制魏滚,都可以訪問;
protected:除本身跟子類可訪問坟漱,其余外部類不可訪問鼠次;
private:只能本身內(nèi)部訪問。
外部可以通過“->”來訪問,對(duì)于private腥寇、protected成翩,可通過kvc或者runtime實(shí)現(xiàn)修改、訪問赦役。

7. Categroy的理解

參考 深入理解Objective-C:Category

  • category的主要作用是為已經(jīng)存在的類添加方法
  • 可以把類的實(shí)現(xiàn)分開在幾個(gè)不同的文件里面麻敌。這樣做有幾個(gè)顯而易見的好處,a)可以減少單個(gè)文件的體積 b)可以把不同的功能組織到不同的category里 c)可以由多個(gè)開發(fā)者共同完成一個(gè)類 d)可以按需加載想要的category 等等掂摔。
  • 聲明私有方法
  • 模擬多繼承
  • 把framework的私有方法公開

category是無法添加實(shí)例變量的(因?yàn)樵谶\(yùn)行期术羔,對(duì)象的內(nèi)存布局已經(jīng)確定,如果添加實(shí)例變量就會(huì)破壞類的內(nèi)部布局乙漓,這對(duì)編譯型語言來說是災(zāi)難性的)级历。可以添加屬性叭披,但是只是聲明寥殖,具體的setter,getter方法還需要自己去實(shí)現(xiàn)涩蜘,并且是這樣實(shí)現(xiàn)setter:objc_setAssociatedObject嚼贡,getter:objc_getAssociatedObject。

8. oc對(duì)象的內(nèi)存布局
  • 所有父類的成員變量和自己的成員變量都會(huì)存放在該對(duì)象所對(duì)應(yīng)的存儲(chǔ)空間中.
  • 每一個(gè)對(duì)象內(nèi)部都有一個(gè)isa指針,指向他的類對(duì)象,類對(duì)象中存放著本對(duì)象的 a)對(duì)象方法列表(對(duì)象能夠接收的消息列表同诫,保存在它所對(duì)應(yīng)的類對(duì)象中粤策;b)成員變量的列表;c)屬性列表。

每個(gè) Objective-C 對(duì)象都有相同的結(jié)構(gòu)误窖,如下圖所示:


image
  • 根對(duì)象就是NSObject掐场,它的superclass指針指向nil
  • 類對(duì)象既然稱為對(duì)象,那它也是一個(gè)實(shí)例贩猎。類對(duì)象中也有一個(gè)isa指針指向它的元類(meta class),即類對(duì)象是元類的實(shí)例萍膛。元類內(nèi)部存放的是類方法列表吭服,根元類的isa指針指向自己,superclass指針指向NSObject類蝗罗。
image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末艇棕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子串塑,更是在濱河造成了極大的恐慌沼琉,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桩匪,死亡現(xiàn)場(chǎng)離奇詭異打瘪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門闺骚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來彩扔,“玉大人,你說我怎么就攤上這事僻爽〕娴铮” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵胸梆,是天一觀的道長(zhǎng)敦捧。 經(jīng)常有香客問我,道長(zhǎng)碰镜,這世上最難降的妖魔是什么兢卵? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮洋措,結(jié)果婚禮上济蝉,老公的妹妹穿的比我還像新娘。我一直安慰自己菠发,他們只是感情好王滤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著滓鸠,像睡著了一般雁乡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上糜俗,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天踱稍,我揣著相機(jī)與錄音,去河邊找鬼悠抹。 笑死珠月,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的楔敌。 我是一名探鬼主播啤挎,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼卵凑!你這毒婦竟也來了庆聘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤勺卢,失蹤者是張志新(化名)和其女友劉穎伙判,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體黑忱,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宴抚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年勒魔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酱塔。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沥邻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出羊娃,到底是詐尸還是另有隱情唐全,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布蕊玷,位于F島的核電站邮利,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏垃帅。R本人自食惡果不足惜延届,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贸诚。 院中可真熱鬧方庭,春花似錦、人聲如沸酱固。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽运悲。三九已至龄减,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間班眯,已是汗流浹背希停。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留署隘,地道東北人宠能。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像磁餐,于是被迫代替她去往敵國和親棍潘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 把網(wǎng)上的一些結(jié)合自己面試時(shí)遇到的面試題總結(jié)了一下崖媚,以后有新的還會(huì)再加進(jìn)來。 1. OC 的理解與特性 OC 作為一...
    AlaricMurray閱讀 2,549評(píng)論 0 20
  • 從前 一個(gè)男人與一個(gè)女人 經(jīng)歷了神話 悲歡離合交替 貧窮富貴相融 從人間到天堂的客車 只為預(yù)定相逢鵲橋 又何時(shí)恤浪? ...
    走在路上的沉默閱讀 112評(píng)論 2 2