隨筆日記1

SwiftyJSON是iOS Swift語(yǔ)言JSON解析的三方庫(kù),主要是基于對(duì)iOS原生JSONSerialization類(lèi)的封裝

若想令自己所寫(xiě)的對(duì)象具有拷貝功能,則需實(shí)現(xiàn) NSCopying 協(xié)議。如果自定義的對(duì)象分為可變版本與不可變版本,那么就要同時(shí)實(shí)現(xiàn) NSCopying與 NSMutableCopying協(xié)議。

runtime 主要體現(xiàn)在以下幾個(gè)方面:

關(guān)聯(lián)對(duì)象Associated Objects消息發(fā)送Messaging消息轉(zhuǎn)發(fā)Message Forwarding方法調(diào)配Method Swizzling“類(lèi)對(duì)象” NSProxyFoundation | Apple Developer DocumentationKVC、KVOAbout Key-Value Coding?動(dòng)態(tài)獲取class 和slector??給分類(lèi)添加屬性和?KVC/KVO了。

獲取存儲(chǔ)weak對(duì)象的map,這個(gè)map的key是對(duì)象的地址,value是weak引用的地址。當(dāng)對(duì)象被釋放的時(shí)候,根據(jù)對(duì)象的地址可以找到對(duì)應(yīng)的weak引用的地址,將其置為nil即可。這就是在weak背后的黑魔法。

RC的內(nèi)部實(shí)現(xiàn)

ARC背后的引用計(jì)數(shù)主要依賴(lài)于這三個(gè)方法:retain 增加引用計(jì)數(shù)? release 降低引用計(jì)數(shù),引用計(jì)數(shù)為0的時(shí)候,釋放對(duì)象? autorelease 在當(dāng)前的auto release pool結(jié)束后,降低引用計(jì)數(shù)。


readwrite:默認(rèn)的屬性,可讀可寫(xiě),生成setter和getter方法。readonly:只讀,只生成getter方法,也就是說(shuō)不能修改變量。

assign:用于聲明基本數(shù)據(jù)類(lèi)型(int、float)僅設(shè)置變量,是賦值屬性。

retain:持有屬性,setter方法將傳入的參數(shù)先保留,再賦值,傳入的參數(shù) 引用計(jì)數(shù)retaincount 會(huì)加1

strong:強(qiáng)引用,引用計(jì)數(shù)+1,ARC下,一個(gè)對(duì)象如果沒(méi)有強(qiáng)引用,系統(tǒng)就會(huì)釋放這個(gè)對(duì)象。

weak:弱引用,不會(huì)使引用計(jì)數(shù)+1.當(dāng)一個(gè)指向?qū)ο蟮膹?qiáng)引用都被釋放時(shí),這塊空間依舊會(huì)被釋放掉。

nonatomic:非原子性,可以多線程訪問(wèn),效率高。

atomic:原子性,屬性安全級(jí)別的表示,同一時(shí)刻只有一個(gè)線程訪問(wèn),具有資源的獨(dú)占性,但是效率很低。

__weak與weak基本相同。前者用于修飾變量(variable),后者用于修飾屬性(property)。__weak 主要用于防止block中的循環(huán)引用。

__block也用于修飾變量。它是引用修飾,所以其修飾的值是動(dòng)態(tài)變化的,即可以被重新賦值的。__block用于修飾某些block內(nèi)部將要修改的外部變量。

__weak和__block的使用場(chǎng)景幾乎與block息息相關(guān)。而所謂block,就是Objective-C對(duì)于閉包的實(shí)現(xiàn)。閉包就是沒(méi)有名字的函數(shù),或者理解為指向函數(shù)的指針。

Swift 中,類(lèi)是引用類(lèi)型,結(jié)構(gòu)體是值類(lèi)型。值類(lèi)型在傳遞和賦值時(shí)將進(jìn)行復(fù)制,而引用類(lèi)型則只會(huì)使用引用對(duì)象的一個(gè)"指向"。所以他們兩者之間的區(qū)別就是兩個(gè)類(lèi)型的區(qū)別。 內(nèi)存中,引用類(lèi)型諸如類(lèi)是在堆(heap)上,而值類(lèi)型諸如結(jié)構(gòu)體實(shí)在棧(stack)上進(jìn)行存儲(chǔ)和操作。相比于棧上的操作,堆上的操作更加復(fù)雜耗時(shí),所以蘋(píng)果官方推薦使用結(jié)構(gòu)體,這樣可以提高 App 運(yùn)行的效率。

datasource協(xié)議里面東西是跟內(nèi)容有關(guān)的,主要是cell的構(gòu)造函數(shù),各種屬性

delegate協(xié)議里面的方法主要是操作相關(guān)的,移動(dòng)編輯之類(lèi)的,你都寫(xiě)上要用什么方法自己去翻就是了

簡(jiǎn)而言之,一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程.進(jìn)程和線程都是由操作系統(tǒng)所體會(huì)的程序運(yùn)行的基本單元,系統(tǒng)利用該基本單元實(shí)現(xiàn)系統(tǒng)對(duì)應(yīng)用的并發(fā)性。進(jìn)程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式:進(jìn)程有獨(dú)立的地址空間,一個(gè)進(jìn)程崩潰后,在保護(hù)模式下不會(huì)對(duì)其它進(jìn)程產(chǎn)生影響,而線程只是一個(gè)進(jìn)程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒(méi)有單獨(dú)的地址空間,一個(gè)線程死掉就等于整個(gè)進(jìn)程死掉,所以多進(jìn)程的程序要比多線程的程序健壯,但在進(jìn)程切換時(shí),耗費(fèi)資源較大,效率要差一些。但對(duì)于一些要求同時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進(jìn)程。

一 ?iOS中都有什么設(shè)計(jì)模式?1.代理模式2.觀察者模式3.MVC模式4.單例模式5.策略模式6.工廠模式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 1 作為一個(gè)典型的朋友圈“達(dá)人”,即原創(chuàng)狀態(tài)的活躍分子,我最近過(guò)得越來(lái)越不舒服。 倒不是因?yàn)辄c(diǎn)贊量和評(píng)論量的起落影...
    高小禮閱讀 3,077評(píng)論 8 6
  • 1 從初中一年級(jí)時(shí),我開(kāi)始喜歡文字,在數(shù)學(xué)作業(yè)本的空白處,在課本的留白處,寫(xiě)下青澀的詩(shī)。曾經(jīng)在《濟(jì)南日?qǐng)?bào)》發(fā)表了一...
    彧婠九尾貓閱讀 550評(píng)論 2 1
  • 明天你是否會(huì)想起,我們走過(guò)的足記 明天你是否還惦記 曾經(jīng)最美的回憶 北九水都不會(huì)忘記 我初次遇見(jiàn)的你 緣起西游最美...
    山方方閱讀 384評(píng)論 0 0
  • “叮叮?!?“鈴鈴鈴……” “嘟嘟……嘟嘟……” …… 早上六點(diǎn),寢室里鬧鐘齊鳴,一時(shí)間喧鬧不已。 司馬望翻個(gè)...
    萬(wàn)我靜閱讀 295評(píng)論 0 1
  • 姓名:王炳娟省份吉林 【日管理打卡第09天】 【知~學(xué)習(xí)】 1、醒來(lái):知行合一傳習(xí)讀本 2、線上6訪、線下4訪 3...
    王炳娟閱讀 139評(píng)論 0 0

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