1.形成tableView卡頓的緣由有哪些? 1.最經(jīng)常使用的就是cell的重用, 注冊重用標(biāo)識符若是不重用cell時,每當(dāng)一個cell顯示到屏幕上時,就會從新建立一個新的c...
1.形成tableView卡頓的緣由有哪些? 1.最經(jīng)常使用的就是cell的重用, 注冊重用標(biāo)識符若是不重用cell時,每當(dāng)一個cell顯示到屏幕上時,就會從新建立一個新的c...
去年隨著疫情的到來,我也失業(yè)了。一邊忙著抵抗病毒,一邊還得繼續(xù)準(zhǔn)備面試。又該準(zhǔn)備“造火箭”了,去了繼續(xù)“擰螺絲”,下面是自己最近的一些總結(jié),也會在后面的面試中,遇到的面試問題...
一、在pod文件中添加以下代碼導(dǎo)入SDK pod 'Stripe' 二、在AppDelegate.m中引入并初始化sdk #import //配置stripe支付 [[STP...
AutoreleasePool實現(xiàn)原理:
編譯器會將 @autoreleasepool {} 改寫為:
void * ctx = objc_autoreleasePoolPush; {} objc_autoreleasePoolPop(ctx);
objc_autoreleasePoolPush:
把當(dāng)前next位置置為nil,即哨兵對象,然后next指針指向下一個可入棧位置,
AutoreleasePool的多層嵌套,即每次objc_autoreleasePoolPush,實際上是不斷地向棧中插入哨兵對象。
objc_autoreleasePoolPop:
根據(jù)傳入的哨兵對象找到對應(yīng)位置。
給上次push操作之后添加的對象依次發(fā)送release消息。
回退next指針到正確的位置。
OC的內(nèi)存管理內(nèi)存管理的困境 1、當(dāng)我們要釋放一個堆空間時,要確保這個堆空間的所有指針都使用完畢,這時候堆空間才能釋放,避免提前釋放 2、釋放指針指向的堆空間時,要確保哪些指針指向這個堆空...
優(yōu)化啟動時間 (1)內(nèi)嵌的dylib盡可能少,或者合并起來。 (2)Rebase/Binding減少_DATA中需要修正的指針,對于OC來說減少class、selctor、c...
一、XMPP簡介 XMPP = The Extensible Messaging and Presence Protocol(可擴(kuò)展通訊和表示協(xié)議) XMPP 協(xié)議是基于 X...
卡頓產(chǎn)生的原因 在 VSync 信號到來后,系統(tǒng)圖形服務(wù)會通過 CADisplayLink 等機(jī)制通知 App,App 主線程開始在 CPU 中計算顯示內(nèi)容,比如視圖的創(chuàng)建、...
話不多說,直接上干貨~ 1.程序員刷題網(wǎng)站 https://leetcode-cn.com/problemset/all/ leetcode是一個十分有趣好用的各種編程語言都...
內(nèi)存管理的困境 1、當(dāng)我們要釋放一個堆空間時,要確保這個堆空間的所有指針都使用完畢,這時候堆空間才能釋放,避免提前釋放 2、釋放指針指向的堆空間時,要確保哪些指針指向這個堆空...
面試題 1.講講 RunLoop,項目中有用到嗎? 應(yīng)用1:創(chuàng)建常駐線程 + (void)networkRequestThreadEntryPoint:(id)__unuse...
一、runtime簡介 Runtime簡稱運行時。OC就是運行時機(jī)制,其中最主要的是消息機(jī)制。對于C語言,函數(shù)的調(diào)用在編譯的時候會決定調(diào)用哪個函數(shù)。對于OC的函數(shù),屬于動態(tài)調(diào)...
一、RAC簡介 1、RAC全稱:ReactiveCocoa, Github 一個開源框架 2、ReactiveCocoa:函數(shù)響應(yīng)編程框架 3、目的:事件的監(jiān)聽,接管了蘋果所...