日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS学习笔记

發布時間:2024/9/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、程序源代碼以C語言為例,是如何轉換為機器可執行的代碼?
答:
C源代碼 -> 預處理器 -> 編譯器 -> 匯編器 -> 鏈接器 -> 轉換為可執行的文件
1. C源代碼經過預處理器其結果,還是C語
2. 預處理器經過編譯(句法, 詞義分析, 代碼的優化,代碼生成),其結果是匯編代碼
3. 匯編代碼經過匯編器其結果是中間代碼(.o),其本質上也是二進制代碼
4. 中間文件(.o)經過鏈接器的鏈接, 最后生成可執行的文件。
二、C語言里比較靈活的一塊內容是指針,那么請談談你對指針的理解。
回答這個問題的思路:
1、什么是指針,指針的基本概念
2、指針的使用場景
3、結合具體例子說明指針能解決哪些問題
4、關于指針運算的問題
三、C語言內存布局

1、代碼區:主要存放代碼,也就是程序指令,這個區的數據是只讀。
2、數據區:已初始化區和未初始化區。聲明全局變量的時候,同時給出了值,那 這個變量就放到已初始化區。未初始化區:BBS,這個區的變量,默認情況下全部初始為零。
3、堆區:程序員接觸最多的區域,malloc函數就是從這個 區來分配內存的,這個區從下到上擴展。
4、棧區:由系統來管理的內存區域,局部變量和函數也存在這個區,特點是先進后出。
5、命令參數及環境變 量區
四、C語言中const 關鍵字的理解
a、對于非指針變量的修飾,const int myInt與int const myInt表達的含義是一樣的,都表示myInt是一個常量。不能修改myInt的值。推薦使用const int myInt.
b、對于指針變量的聲明,有四種情況,以int*為例:
1、const int *pMyPointer
2、int const *pMyPointer
3、int * const *pMyPointer
4、const int * const pMyPointer
對于1、2兩種情況,所表達的含義是一樣的,都是指指針指向的內容不能修改。
對于第3種情況,所表達的含義是說指針本身不能再指向其它地址。
對于第4種情況,表示指針指向的內容不能修改,同時指針本身也不能再指向其它地址。
五、在繼承語法中,關于OC的方法調度機制
1、每一個對象,都有一個指針指向其類
2.當向對象發送消息, 對象準備執行方法的時候,它會先在當前對象對屬的類中查找這個方法, 如果找到話就開始執行, 如果沒有找到的話, 就去對象所屬類的父類去查 找, 如果找到就執行, 如果沒有找到, 則會沿著繼承鏈一層一層的向上去查找, 直到NSObject 類, 如果找到則執行, 如果沒有找到, 則首先編譯器會給出一個警 告, 如果忽略了這個警告,則在運行時程序會崩潰。
六、在繼承中, 子類對象是如何使用父類聲明的成員變量的?
在創建一個新類的時候, 其對象會首先從父類中繼承成員變量, 然后添加自身的成員變量。
七、談談你對OC中self 和 super的理解?
1.self 首先他是一個指針。
2.當向對象發送消息, 對象去調用對應的方法的時候, 在調用方法中, 在這個方法里,隱藏傳了一個指針, 這個指針就是self,這個self 代表的是調用這個方法的消 息接收者。
3. 有時候, 我們需要在子類里顯式的調用父的方法, 這個時候 super可以代表父類, 需要注意的是, 這個super不是指針,也不是成員變量, 而它只是編譯器識別的 指令, 主要就用于子類訪問父類的內容。
八、請問#include"header.h"和#include<header.h>有什么區別?在OC中#import又有什么特點?
? ? 1、#include 屬于預處理指令。主要功能是導入頭文件內所有的內容, 其本質是將頭文件的內容原封不同的復制到實現文 ? ? ?件(.c .m .cpp .mm)
? ? ?2.#import與#include的功能和本質是一樣的。
? ? ?3.#include "header.h" 雙引號括起來。 因為要導入頭文件的內容, 所以需要找到頭文件的位置,對于雙引號, 預處理器會 ? ? ?首先從當前工程的路徑下去查找相應的頭 文件, 如果沒有找到, 則去系統的頭文件目錄查找。
? ? ?4.#include <> 尖括號同, 預處理器會直接從系統頭文件目錄去查找頭文件的位置
? ? ?5.#include "" 一般情況主要用于導入自定義的頭文件。 #include <>主要用于導入系統頭文件,那么#include預 ? ? ? ?處理指令, 在文件相互依賴的時候, 容易出現重復 包含的錯誤, 為了解決這個問題, C語言引入了頭文件衛士的機 ? ? ? ? 制#ifndef #define #endif.
? ? ? 6.#import主要的特點是, 不需要使用頭文件衛士就可達到不重復包含頭文件。從本質來說, 他的內容已解決了重復包含的問題, 所以在OC語言里, 我們主要推薦使用 #import
九、談談你對OC程序語言內存管理機制的理解。
1、每一個對象都有與之相關的整數,我們稱這個整數為引用計數器或保留記住器
2、當某段代碼或者某個對象,需要訪問這個對象的話,會將此對象的引用計數器加1.
十、什么是自動釋放池,機制是什么?
? ? ?自動釋放池類似一個容器(類似棧的數據結構),當一個對象,不能確定它在什么時候銷毀,或者銷毀會使代碼實現變得更加復雜,此時就可以向對象發送一個 autorelease消息,那么這個對象將會被放到自動釋放池里,當自動釋放池銷毀的時候,會向池子里的所有對象發送一個release消息,來確保對象內存的銷毀,那么自動 釋放池銷毀是有規律的,通常都是在一個事件循環自動完成之后,進行銷毀和創建。
* 在iPhone 應用開發中盡量不要使用自動釋放池。
十一、手動管理內存的規則是什么?
1、 如果創建了一個對象, 就必須考慮到要釋放這個對象。如果使用了new , alloc , copy 方法獲得到了一個對象, 則必須釋放或者是自動釋放此對象。
2. 如果對創建的對象,發送了retain消息,那么必須對此對象發送release消息,保證retain 和 release的使用次數是相同。 3.鑒于,new , alloc , copy方法的特殊性, 所以我們程序中一般的方法, 不要使用這個三個關鍵字開頭, 除非我們的方法也是創建對象。
12、類別的作用
1. 為現有的類(不一定都是自定義的類,還可以是系統定義的類, 或者是第三方提供的類)添加新的行為 2. 可能將類的實現(復雜的、比較大的工程)分散到不同的文件里來實現,或者不同的框架中來實現
3. 可以創建對私有方法的前向引用(一般情況, 做越獄開發經常用到這個功能)
4. 可以創建NSObject的類別,(向對象添加非正式協議)
? ? ? 類別有兩個局限性
1. 無法向類別中添加新的實例變量,類別沒有位置容納實例變量
2. 名稱沖突 類別具有比較高的優先級。

轉載于:https://blog.51cto.com/jjsun/1630514

總結

以上是生活随笔為你收集整理的IOS学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。