iOS 面試題總結

2021-07-11 11:35:42 字數 3464 閱讀 3959

基礎但是重要

1,static

關鍵字至少有下列

n個作用: 1

)函式體內

static

變數的作用範圍為該函式體,不同於

auto

變數,該變數的記憶體只被分配一次,因此其值在下次呼叫時仍維持上次的值; (

2)在模組內的

static

全域性變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問; (

3)在模組內的

static

函式只可被這一模組內的其它函式呼叫,這個函式的使用範圍被限制在宣告它的模組內; (

4)在類中的

static

成員變數屬於整個類所擁有,對類的所有物件只有乙份拷貝; (

5)在類中的

static

成員函式屬於整個類所擁有,這個函式不接收

this

指標,因而只能訪問類的

static

成員變數。 2,

我們的1.

伺服器傳送通知的方式。

當有新版本時,由伺服器向所有使用者傳送通知,提醒使用者進行更新。

壞處:1

)可能使用者已經更新了新版本,可還是收到了有新版本的提示。 2

)如果使用者關閉了接收

push

通知,那麼即使伺服器

push

了乙個新版本提示,使用者也收不到。 2.

本地通知的方式。

此處,我建議在應用進入後台的時候再檢查有無新版本,然後傳送本地通知。

因為使用者在使用

的時候,並不希望被打斷,或者並不希望此時公升級。因為公升級過程中,他不能使用該

方法:伺服器提供乙個訪問現有版本的介面,當應用進入後台的時候,本地**可以每隔一段時間(

1天,或者

3天,或者

1個禮拜(不能一進入後台就訪問介面))去訪問伺服器獲取當前應用的版本,如果有更新,則彈出對話方塊提醒使用者進行更新,此時使用者更願意更新,因為此時更新不影響使用者使用現有。

好處:不影響使用者使用

,是在使用者暫時不用

的時候進行更新,使用者更願意選擇更新版本。

壞處:不能及時更新版本。

提供乙個介面,訪問介面(在使用應用中間(比如進入某個模組,這個模組呼叫此介面))進行提醒更新

好處:及時。使用者可以很及時的更新新版本。

壞處:是使用者在使用

中間收到提示,此時一般都不願意更新新版本。 4

、另外,友盟有自動提醒的功能,利用友盟推送可以實現版本更新

優缺點同方案一。

實現方法:

url,然後只需新增一行**來完成自動更新檢查。具體實現請看:

我是建議使用本地通知的方式。

3,run loop

是什麼? 1

。runloop

是事件接收和分發機制的乙個實現。 2

。什麼時候使用

runloop

當需要和該執行緒進行互動的時候。主線程

預設有

runloop

。當自己啟動乙個執行緒,如果只是用於處理單一的事件,則該執行緒在執行完之後就退出了。所以當我們需要讓該執行緒即監聽某項事務事,就得讓執行緒一直不退出,

runloop

就是這麼乙個迴圈,沒有事件的時候,一直卡著,有事件來臨了,執行其對應的函式 3

。run loop

需要處理的

event source

有兩種:

input sources(

常是其他執行緒的非同步的

event)

和timer sources

(定時器)。

runloop

是事件接收和分發機制的乙個實現。

runloop

提供了一種非同步執行**的機制,不能並行執行任務。

在主佇列中,

main runloop

直接配合任務的執行,負責處理

ui事件、定時器以及其他核心相關事件。

runloop

的主要目的:

保證程式執行的執行緒不會被系統終止。

什麼時候使用

runloop ?

當需要和該執行緒進行互動的時候才會使用

runloop.

每乙個執行緒都有其對應的

runloop

,但是預設非主線程的

runloop

是沒有執行的,需要為

runloop

新增至少乙個事件源,然後去

run它。

一般情況下我們是沒有必要去啟用執行緒的

runloop

的,除非你在乙個單獨的執行緒中需要長久的檢測某個事件。

主線程預設有

runloop

。當自己啟動乙個執行緒,如果只是用於處理單一的事件,則該執行緒在執行完之後就退出了。所以當我們需要讓該執行緒監聽某項事務時,就得讓執行緒一直不退出,

runloop

就是這麼乙個迴圈,沒有事件的時候,一直卡著,有事件來臨了,執行其對應的函式。

runloop

,正如其名所示,是執行緒進入和被執行緒用來響應事件以及呼叫事件處理函式的地方。需要在**中使用控制語句實現

run loop

的迴圈,也就是說,需要**提供

while

或者for

迴圈來驅動

run loop。

在這個迴圈中,使用乙個

runloop

物件[nsrunloop currentrunloop]

執行接收訊息,呼叫對應的處理函式。

runloop

接收兩種源事件

:input sources

和timer sources。

input sources 

傳遞非同步事件,通常是來自其他執行緒和不同的程式中的訊息;

timer sources(

定時器) 

傳遞同步事件(重複執行或者在特定時間上觸發)。

除了處理

input sources

,runloop

也會產生一些關於本身行為的

notificaiton

。註冊成為

runloop

的observer

,可以接收到這些

notification

,做一些額外的處理。(使用

corefoundation

來成為runloop

的observer)。

runloop

工作的特點:

1>

當有事件發生時,

runloop

會根據具體的事件型別通知應用程式作出響應;

2>

當沒有事件發生時,

runloop

會進入休眠狀態,從而達到省電的目的;

3>

當事件再次發生時,

runloop

會被重新喚醒,處理事件。

runloop

,而通常會把事件新增到

runloop中。

iOS面試題總結(一)

1.為什麼不能給類別category 新增成員變數?extension呢?2.iskindofclass 和 ismemberofclas區別?3.weak的實現原理 4.理解 self class 與 super class 5.ios中的記憶體管理機制 6.block如何訪問外部變數?下劃線 b...

iOS面試題總結 (二)

動態繫結 程式直到執行時才知道執行哪個方法,動態繫結需要做的,即就是在例項所屬類確定後,將某些屬性和方法繫結到例項上。sel是類方法方法的指標,他就相當於c語言中的中函式指標。sel class func selector oc類裡面的方法都是被轉換成sel變數進行儲存的,當類宣告乙個物件,物件呼叫...

面試題總結 html面試題)

附上鏈結 doctype 的作用是什麼?宣告一般位於文件的第一行,它的作用主要是告訴瀏覽器以什麼樣的模式來解析文件。一般指定了之後會以標準模式來 進行文件解析,否則就以相容模式進行解析。在標準模式下,瀏覽器的解析規則都是按照最新的標準進行解析的。而在相容模式下,瀏 覽器會以向後相容的方式來模擬老式瀏...