寫了一下午代碼本來想去透透氣突然來了一個(gè)電話,是碼市的什么優(yōu)質(zhì)開發(fā)者調(diào)查員,我都忘了什么時(shí)候申請(qǐng)過的!人家問了我一些問題,每個(gè)都似曾相識(shí),卻又說不完整!記得兩年多前面試的時(shí)候可是背的滾瓜爛熟的,UI界面畫久了還真都忘得差不多了?;貋碚砹艘幌聞偛诺膯栴},就當(dāng)在復(fù)習(xí)下,因?yàn)橐院髶Q工作可能一會(huì)用得到。還有一個(gè)關(guān)于繼承的忘了問的什么了。
weak和assgin的區(qū)別
當(dāng)一個(gè)對(duì)象的引用計(jì)數(shù)為0時(shí),所有指向該對(duì)象的weak屬性指針會(huì)被自動(dòng)設(shè)置為nil,而assign屬性不會(huì),如果對(duì)象被釋放了,此時(shí)再進(jìn)行訪問,程序崩潰。
xib/sb為什么用weak
總結(jié)下應(yīng)該是xib/sb只需要強(qiáng)引用它們所必須持有的第一個(gè)對(duì)象就行,比如viewcontroller。第一個(gè)對(duì)象下面的用weak,這樣viewcontroller釋放后所有的子view也會(huì)釋放。不用擔(dān)心內(nèi)存泄漏。
Storyboard 使用 Weak Property 聲明 Outlet
runloop的用到了那些model
這篇寫的比較全我就不廢話了
Runloop
Extension(擴(kuò)展)和Categories(分類)的區(qū)別
- 類別:在沒有原類 .m 文件的基礎(chǔ)上,給該類添加方法;
- 延展:一種特殊形式的類別,主要在一個(gè)類的.m文件里聲明和實(shí)現(xiàn)延展的作用,就是給某類添加私有方法或是私有變量。
- 兩個(gè)的區(qū)別:
① 延展可以添加屬性并且它的方法都是波裇實(shí)現(xiàn)的。延展可以認(rèn)為是一個(gè)私有的類目。
② 類別可以在不知道,不改變?cè)写a的情況下往里面添加新的方法,只能添加,不能刪除修改。
③ 并且如果類別和原來類中的方法產(chǎn)生名稱沖突,則類別將覆蓋原來的方法,因?yàn)轭悇e具有更高的優(yōu)先級(jí)。
④ 繼承可以增加,修改刪除方法,添加屬性。 - Category只能為對(duì)象添加方法,卻不能添加成員變量。原因:如果可以添加成員變量,添加的成員變量沒有辦法初始化
@property中有哪些屬性關(guān)鍵字默認(rèn)的有哪些
- 原子性(atomic,nonatomic)
- 讀寫(readwrite, readonly)
- 內(nèi)存管理(assign, strong, weak, unsafe_unretained,copy)
- getter、setter
- 默認(rèn)的有atomic,readwrite,assign,
OC中調(diào)用nil對(duì)象的方法
- nil和C語(yǔ)言的NULL相同,在objc/objc.h中定義。nil表示Objective-C對(duì)象的值為空。
在C語(yǔ)言中,指針的控制用NULL表示。在Objective-C中,nil對(duì)象調(diào)用任何方法表示什莫
也不執(zhí)行,也不會(huì)崩潰。 - 向nil發(fā)送消息是完全有效的-- 只是在運(yùn)行時(shí)不會(huì)有任何作用。
- 如果一個(gè)方法返回值是一個(gè)對(duì)象,那么發(fā)送給nil的消息將返回0(nil)
- 如果方法返回值為指針類型,其指針大小為小于或者等 sizeof(void*),float,double,long double
或者long long 的整型標(biāo)量,發(fā)送給nil的消息將返回0.
base64和MD5
MD5是一種不可逆的消息摘要算法。為計(jì)算機(jī)安全領(lǐng)域廣泛使?的一種散列函數(shù),
用以提供消息的完整性保護(hù)。常用語(yǔ)校驗(yàn)。
Base64是一種基于64個(gè)可打印字符來表示二進(jìn)制數(shù)據(jù)的表示方法。Base64是一種編碼方式。
注意:base64的主要作用不是加密,而是用來避免“字節(jié)”中不能轉(zhuǎn)換成可顯示字符的數(shù)值。
MD5和Base64介紹與應(yīng)用
最近有面試了兩家,繼續(xù)記錄下,好多東西知道用的時(shí)候要注意什么,但是直接讓回答有時(shí)候還真的打答不出來。
block什么時(shí)候在堆上,什么時(shí)候在棧上
block本身是像對(duì)象一樣可以retain,和release。但是,block在創(chuàng)建的時(shí)候,它的內(nèi)存是分配在棧(stack)上,而不是在堆(heap)上。他本身的作于域是屬于創(chuàng)建時(shí)候的作用域,一旦在創(chuàng)建時(shí)候的作用域外面調(diào)用block將導(dǎo)致程序崩潰。使用retain也可以,但是block的retain行為默認(rèn)是用copy的行為實(shí)現(xiàn)的, 因?yàn)閎lock變量默認(rèn)是聲明為棧變量的,為了能夠在block的聲明域外使用,所以要把block拷貝(copy)到堆,所以說為了block屬性聲明和實(shí)際的操作一致,最好聲明為copy。
__block和__weak有什么區(qū)別?
__block不管是ARC還是MRC模式下都可以使用,可以修飾對(duì)象,還可以修飾基本數(shù)據(jù)類型。
__weak只能在ARC模式下使用,也只能修飾對(duì)象,不能修飾基本數(shù)據(jù)類型。
__block對(duì)象可以在block中被重新賦值,__weak不可以。
相比delegate的邏輯散落,blocks更加的優(yōu)雅簡(jiǎn)潔,我對(duì)block比較深刻的體會(huì)就是它簡(jiǎn)化了回調(diào)的過程,可以讓代碼明顯提高可讀、可維護(hù)性和封裝性。block的本質(zhì)應(yīng)該說是匿名函數(shù),這是OC中所沒有的,解決了方法不能傳遞問題。
多個(gè)網(wǎng)絡(luò)請(qǐng)求全部完成后再執(zhí)行
多個(gè)網(wǎng)絡(luò)請(qǐng)求并發(fā)執(zhí)行、順序執(zhí)行
這個(gè)我記得是有這個(gè)信號(hào)量,面試的哥們說了一句信號(hào)量是RAC的東西,一下把我打亂了!GCD中的信號(hào)量應(yīng)該是和RAC的不同。RAC沒有過多研究過,有空看看。
viewcontroller生命周期
這個(gè)是很基礎(chǔ)的,一時(shí)緊張竟然沒說完整!
iOS - ViewController生命周期
block和delegate分別在什么時(shí)候適合使用
在IOS的開發(fā)中,代理能夠完成的事情,使用block都可以實(shí)現(xiàn),因?yàn)樗鼈兌际呛瘮?shù)的回調(diào),并且block的實(shí)現(xiàn)方式是更加簡(jiǎn)單的,因?yàn)樗恍枰贫▍f(xié)議,也不需要定義讓自身成為代理;但是有些時(shí)候,如果這個(gè)對(duì)象對(duì)外界提供的接口很多,那么使用代理是更加方便的,因?yàn)樗梢园岩獙?shí)現(xiàn)的函數(shù)寫在一起,只要成為它的代理就可以同時(shí)實(shí)現(xiàn)它的這些方法,如果是使用block,需要每次調(diào)用block,顯得比較亂。
所以綜上,要是接口少,最好用block,要是接口多就用delegate。
怎么去優(yōu)化一個(gè)viewcontroller
這個(gè)問題,我前段時(shí)間去滬江參加過一個(gè)iOS的分享,PPTV的任凱前輩分享了一個(gè)代碼重構(gòu)的經(jīng)驗(yàn),當(dāng)時(shí)忘了總結(jié)了,PPT我還留著,大家有興趣可以看看。找個(gè)一個(gè)現(xiàn)場(chǎng)小伙伴的總結(jié)。
滬江 iOS 技術(shù)沙龍隨想
git的常用命令merge和rebase
git merge <branch> # 將branch分支合并到當(dāng)前分支
git merge origin/master --no-ff # 不要Fast-Foward合并,這樣可以生成merge提交
git rebase master <branch> # 將master rebase到branch,相當(dāng)于: git co <branch> && git rebase master && git co master && git merge <branch>
我大部分時(shí)間都是單打獨(dú)斗,所以git的命令除了push別的都沒怎么用過!
set和array的區(qū)別,怎么判斷set集合里面的對(duì)象
區(qū)別set無序,array有序。(我擦我當(dāng)時(shí)竟然忘了這個(gè),面試估計(jì)完蛋了)
set元素具有唯一性,不可重復(fù)。array的元素可以重復(fù)。
如果是自定義對(duì)象,對(duì)象可能有很多屬性,可以便利所有的屬性來判斷是否相同,但是效率肯定低。參考這個(gè)iOS中的對(duì)象等同性
關(guān)于約束的優(yōu)先級(jí)
我以前碰到類似的問題好像都是把約束拖出來用代碼解決的,這個(gè)還真沒有注意過!
在約束的設(shè)置里面有一個(gè)Priority參數(shù),設(shè)置這個(gè)數(shù)值越大優(yōu)先級(jí)越高,有些類似CSS中z-index屬性。
最近幾個(gè)iOS版本的特性
iOS 9 適配系列教程
iOS開發(fā)--適配iOS 10以及Xcode 8
react native 的核心思想
React-Native的核心思想就是組件化
React Native學(xué)習(xí)總結(jié)