標籤:
(1).weak 和assign的區別?
assign: 用於非指標變數
(2).IOS開發之----#import、#include和@class的區別?
1. 如果不是c/c++,盡量用#import。
2. 能在實現檔案中#import,就不在標頭檔中#import。
3. 能在標頭檔中@class+實現檔案中#import,就不在標頭檔中#import。
(3).Object-C Category和Extension的區別?
Category:
1.用於給class及其subclass添加新的方法
2.有自己單獨的 .h 和 .m 檔案
3.用於添加新方法,而不能添加新屬性(property)
Extension常被稱為是匿名的Category
1.用於給類添加新方法,但只作用於原始類,不作用於subclass
2.只能對有implementation原始碼的類寫Extension,對於沒有implementation原始碼的類,比如framework class,是不可以的
3.Extension可以給原始類添加新方法,以及新屬性
(4).Block的引用迴圈問題 (ARC & non-ARC)
__weak __typeof(self)weakSelf = self;
__strong __typeof(weakSelf)strongSelf = weakSelf;
(5)程式啟動的完整過程?
1.main函數
2.UIApplicationMain
* 建立UIApplication對象
* 建立UIApplication的delegate對象
3.delegate對象開始處理(監聽)系統事件(沒有storyboard)
* 程式啟動完畢的時候, 就會調用代理的application:didFinishLaunchingWithOptions:方法
* 在application:didFinishLaunchingWithOptions:中建立UIWindow
* 建立和設定UIWindow的rootViewController
* 顯示視窗
3.根據Info.plist獲得最主要storyboard的檔案名稱,載入最主要的storyboard(有storyboard)
* 建立UIWindow
* 建立和設定UIWindow的rootViewController
* 顯示視窗
ios面試題整理