基礎題

1、選擇題

 

1.Object-C的類能夠多重繼承麼?( B )程序員

A.能夠  B.不能夠設計模式

 

2.什麼是主窗口?( B )數組

A.App中惟一的那個UIWinow對象緩存

B.能夠接收到鍵盤輸入等事件的UIWindowapp

 

3.要讓對象具備歸檔必須實現的協議是?( A )函數

A.NSCoding    B.NSCopying佈局

 

4.讓一個視圖刷新的方法是?( A )atom

A.setNeedsDisplay B.drawRect C.loadView D.initWithFramespa

 

5.關於MRC中的assign和ARC中的weak的區別,下列描述錯誤的是( C )設計

A.用weak時當對象消失後自動把指針變成nil

B.修飾代理時用weak和assign屬性均可以

C.MRC中的assign只能用於基本數據類型,不能用於OC中的對象

D.ARC中的assign只能用於修飾基本數據類型

 

6.在ARC中 assign,weak,copy,strong 屬性的做用,下列說法正確的是(多選)( ABCD )

A.copy   : 通常用於NSString\block

B.strong : 通常用於除了NSString\block之外的OC對象

C.weak   : 通常用於代理\UI控件 當2個對象相互引用,一端用strong,一端用weak

D.assign : 基本數據類型、枚舉、結構體(非OC對象)

 

7.如下哪些不是UINavigationController的屬性?( D )

A.@property(nonatomic,readonly) UINavigationBar *navigationBar;

B.@property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;

C.@property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;

D.@property(nonatomic,retain) UITabBarItem *tabBarItem;

 

8.關於層和UIView的區別說法錯誤的是?( D )

A.二者最大的區別是,圖層不會直接渲染到屏幕上,UIView 是iOS系統中界面元素的基礎,全部的界面元素都是繼承自它

B.UIView自己徹底是由CoreAnimation來實現的

C.UIView真正的繪圖部分,是由一個CALayer類來管理,UIView自己更像是一個CALayer的管理器

D.一個UIView上只能有一個CALayer用來加強UIView的展示能力

 

9.UIViewController在整個生命週期中,如下各個方法的調用順序正確的是( A )

A. init -> viewDidLoad -> viewWillApper -> viewDidAppear -> viewWillDisapper -> viewDidDisapper

B. init -> viewWillApper -> viewDidAppear -> viewDidLoad -> viewWillDisapper -> viewDidDisapper

C. init -> viewWillApper -> viewDidLoad -> viewDidAppear -> viewWillDisapper -> viewDidDisapper

D. init -> viewWillApper -> viewDidAppear -> viewWillDisapper -> viewDidLoad  -> viewDidDisapper

 

10.在沒有navigationController的狀況下,要從一個ViewController切換到另外一個ViewController應該( D )

A. [self.navigationController pushViewController:nextViewController animated:YES];

B. [self.view addSubview:nextViewController.view];

C. [self pushViewController:nextViewController animated:YES];

D. [self presentModalViewController:nextViewController animated:YES];

 

11.如下哪一個不是刷新表格TableView的方法( D )

A. reloadData

B. deleteRowsAtIndexPaths:withRowAnimation:

C. reloadRowsAtIndexPaths:withRowAnimation:

D. reloadTableView

 

12.如下哪一個不是iOS中數據持久化經常使用的方式( C )

A. 屬性列表

B. 對象歸檔

C. MySQL

D. CoreData

 

13.關於NSSet、NSArray、NSDictionary說法錯誤的是( C )

A. NSArray 是順序的,能夠經過下標獲取數組中的對象

B. NSDictionary 是無序的,經過鍵值對匹配,能夠經過key-->value

C. NSSet 是有序的,"一般用於作緩衝區",能夠經過"anyObject"方法得到其中的對象

D. NSSet、NSArray、NSDictionary只能保存Cocoa對象,不能用於保存C語言中的基本數據類型

 

14.關於iOS中代理設計模式的說法錯誤的是( D )

A. 代理自己是一個對象,這個對象是專門表明被代理對象來和程序中其餘對象打交道的。

B. 代理的主要價值是它可讓你容易的定製各類對象的行爲。

C. 當一個類的某些功能須要被別人來實現,可是既不明確是些什麼功能,又不明確誰來實現這些功能的時候,代理模式就能夠派上用場。

D. 聲明一個代理屬性時一般須要使用strong防止循環引用問題

 

15.如下關於-(void)loadView說法錯誤的是( D )

A. 蘋果建議:在loadView方法中,只是建立子視圖控件,不設置位置,在viewWillLayoutSubviews方法中設置控件的位置

B. loadView方法是蘋果公司專門爲程序員提供的,用代碼建立視圖層次結構的方法

C. 在loadView方法中,一般不要調用[super loadView];若是調用父類方法默認會建立一個空視圖

D. 在loadView方法中,若是self.view沒有被實例化以前,直接調用self.view,系統會自動建立一個self.view

 

2、簡答題

1.不接收用戶的觸摸事件的緣由?

答:

(1)不接收用戶交互 userInteractionEnabled = NO;

(2)隱藏: hidden = YES;

(3)透明: alpha = 0.0 ~ 0.01;

(4)若是父視圖不接收用戶交互,那麼其中的全部子視圖,一樣不支持用戶交互!

(5)若是子視圖所在位置,超出了父視圖的有效範圍,是不能交互的

即使沒有設置clipsToBounds,也只能顯示,可是不能交互!

 

2.iOS應用程序中沙盒內有哪些文件夾,一般分別是用來作什麼的?

答:

(1)Documents;          (重要的文件通常存一些小的數據)

(2)Library/Caches;     (非重要的本地緩存文件)

(3)Library/Preference; (保存應用偏好設置數據)

(4)tmp;                (應用程序的臨時緩存文件)

 

3.請分別寫出UITableView和UIButton的層級結構(繼承關係),一直到 NSObject .

(1)UITableView -> UIScrollView -> UIView -> UIResponder -> NSObject

(2)UIButton -> UIControl -> UIView -> UIResponder -> NSObject

 

4.請畫出CAAnimation的層級結構

 

 

5.控制器View的生命週期及相關函數是什麼?你在開發中是如何用的?

答:

(1)首先判斷控制器是否有視圖,若是沒有就調用loadView方法建立:經過storyboard或者代碼;

(2)隨後調用viewDidLoad,能夠進行下一步的初始化操做;只會被調用一次;

(3)在視圖顯示以前調用viewWillAppear;該函數能夠屢次調用;

(4)視圖viewDidAppear

(5)在視圖顯示以前調用viewWillDisappear;該函數能夠屢次調用(如須要);

(6)在佈局變化先後,調用viewWill/DidLayoutSubviews處理相關信息;

相關文章
相關標籤/搜索