iOS面試題

AppDelegate的生命周期:

創(chuàng)建iOS工程的時候。其實就會創(chuàng)建一個UIApplication的對象,代表當(dāng)前的這個程序,作用是用來觀察應(yīng)用程序的狀態(tài)的改變。然后通知代表去針對這些狀態(tài)的改變做出相應(yīng)的反應(yīng)。

實現(xiàn)一系列的UIApplicationDelegate協(xié)議方法:

1.程序啟動成功之后會自動調(diào)用這個方法

這個方法是iOS真正的入口,iOS編程實質(zhì)就是在實現(xiàn)這個方法


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        //創(chuàng)建一個自己定義的window
        //搭建UI界面,請求數(shù)據(jù),展示數(shù)據(jù)
        print("程序啟動成功")
        
        return true
    }

2.應(yīng)用程序?qū)⒁兂煞腔钴S狀態(tài)的時候會自動調(diào)用這個方法:

應(yīng)用程序不顯示在手機屏幕上的時候就是非活躍狀態(tài)
a.按home鍵讓程序在后臺運行,來電可以將應(yīng)用程序變成非活躍狀態(tài)

    func applicationWillResignActive(application: UIApplication) {
        
        //一般在這個方法中關(guān)閉定時器,暫停視頻音頻的方法,讓游戲暫停。。。
        print("將要變成非活躍狀態(tài)")
    }

3.應(yīng)用程序已經(jīng)進入后臺的時候會調(diào)用這個方法

在應(yīng)用程序打開的時候按home才會進入后臺

    func applicationDidEnterBackground(application: UIApplication) {
       
        
        print("已經(jīng)進入后臺")
    }

4.應(yīng)用程序?qū)⒁M入前臺:

從后臺打開應(yīng)用程序才算進入前臺

    func applicationWillEnterForeground(application: UIApplication) {
        
        //根據(jù)情況去開啟定時器,繼續(xù)播放視頻/音頻,繼續(xù)游戲
        print("將要進入前臺")
    }

5.應(yīng)用程序已經(jīng)變成活躍狀態(tài)的時候會調(diào)用這個方法:

從后臺回到前臺,或來電打斷結(jié)束(掛機)就會從非活躍狀態(tài)變成活躍狀態(tài)

    func applicationDidBecomeActive(application: UIApplication) {
        
        //根據(jù)情況去開啟定時器,繼續(xù)播放視頻/音頻,繼續(xù)游戲。。。

        print("已經(jīng)變成活躍狀態(tài)")
    }

6.應(yīng)用程序?qū)⒁K止的時候會調(diào)用這個方法:

一般情況下,只有從后臺強制將應(yīng)用程序退出的時候,程序才會終止

    func applicationWillTerminate(application: UIApplication) {
        
        //讓應(yīng)用程序不能在后臺運行:在info.plist文件中中添加key為 Application does not run in background,值為YES的鍵值對
        print("程序?qū)⒁K止")
    }
    

7.應(yīng)用程序接收到內(nèi)存警告的時候會自動調(diào)用這個方法:

      func applicationDidReceiveMemoryWarning(application: UIApplication)
      {
        //銷毀一些不必要的內(nèi)存,一般在這兒去釋放一些緩存數(shù)據(jù)
        print("接收到內(nèi)存警告")
    }

AFNetworking的實現(xiàn)原理:

AFNetworking的介紹:

AFNetworking是實際項目最常用的一個網(wǎng)絡(luò)請求庫,目前在github中的下載量排名第一,對應(yīng)的版本最新的為3.0。2.0以前封裝自系統(tǒng)的NSURLConnection,3.0(iOS9)之后封裝自系統(tǒng)的NSURLSession,主要使用異步數(shù)據(jù)請求,還可以檢測網(wǎng)絡(luò)狀態(tài),緩存圖片

AFNetworking支持比較新的特性,簡單易用,但文檔數(shù)目一般,功能少,忽略了一些擴展功能。

AFNetworking實現(xiàn)原理:AFNetworking直接操作對象的AFHttpClient,是一個實現(xiàn)了NSCoding和NSCopying協(xié)議的NSObject子類,AFNetworking默認沒有封裝同步請求,如果開發(fā)者需要使用同步請求,則需要重寫getPath: paramenters: success: failures方法,對AFHttpRequestOperation進行同步處理。

AFNetworking涉及到的常用的請求方式GET和POST:

GET和POST的區(qū)別:

  1. 安全性問題:get請求的參數(shù)全部暴露在接口中,一般叫做明文請求或者叫做傻瓜式請求;post請求的參數(shù)一般是以字典的方式進行拼接,相對于get比較安全
  1. 對文件大小的要求:get不允許向服務(wù)器上傳文件(圖片,pdf,音視頻)
  1. 如果從服務(wù)器獲取數(shù)據(jù)或者查詢數(shù)據(jù)使用get請求,如果上傳數(shù)據(jù)到服務(wù)器或者修改服務(wù)器上的數(shù)據(jù)使用post

SDWebImage的實現(xiàn)原理:

SDWebImage的介紹:

SDWebImage使用來加載網(wǎng)絡(luò)圖片的第三方庫,實現(xiàn)了異步請求數(shù)據(jù),并且實現(xiàn)了圖片的緩存

SDWebImage的實現(xiàn)原理:

在內(nèi)存和沙盒目錄下各緩存一份文件,內(nèi)存中的文件到一定程度會自動清除,沙盒目錄下的文件需要由用戶手動清除,首先檢測內(nèi)存-再檢測沙盒目錄-網(wǎng)絡(luò)請求(前兩者都沒有才會進行網(wǎng)絡(luò)請求)

添加SDWebImage的頭文件
//UIImageView的類別
#import "UIImageView+WebCache.h"
//UIButton的類別
#import "UIButton+WebCache.h"
//UIImage的類別,用于加載動態(tài)圖(gif圖)
#import "UIImage+GIF.h"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,211評論 30 472
  • OC的理解與特性 OC作為一門面向?qū)ο蟮恼Z言,自然具有面向?qū)ο蟮恼Z言特性:封裝、繼承、多態(tài)。它既具有靜態(tài)語言的特性...
    克魯?shù)吕?/span>閱讀 458評論 0 0
  • OC的理解與特性O(shè)C作為一門面向?qū)ο蟮恼Z言,自然具有面向?qū)ο蟮恼Z言特性:封裝、繼承、多態(tài)。它既具有靜態(tài)語言的特性(...
    LIANMING_LI閱讀 535評論 0 0
  • 多線程、特別是NSOperation 和 GCD 的內(nèi)部原理。運行時機制的原理和運用場景。SDWebImage的原...
    LZM輪回閱讀 2,039評論 0 12
  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 2,014評論 0 7