iOS 面試總結 二

1.用三種方法生成內容爲數字 1,2 ,3 的可變數組。(使用Objective-C,儘可能一行代碼實現)

//方法一
NSMutableArray *arr1 = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3",nil];
//方法二
NSMutableArray *arr2 = [[NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];
//方法三
NSMutableArray *arr3 = [NSMutableArray addObjectFromArray:arr];

2.Objective-C 中,分類(Category)和擴展 (Extension)的異同? ##?

  • 相同:均可以給類添加額外的方法;
  • 不一樣:分類只能添加方法不能添加屬性,擴展能夠點擊屬性和方法,但方法一對喲啊實現。
  • category和extensions的不一樣在於後者能夠添加屬性。另外後者添加的方法是必需要實現的。
    extensions能夠認爲是一個私有的Category。

3. 你瞭解哪些 KVO 的開源封裝?

KVOController https://github.com/facebook/KVOController
不是特別瞭解這方面 在git上找個了start最多的。html

4.是否瞭解Java? Java 中的Interface 與 Objective-C 中的 Protocol 有哪些區別?

OC中的代理有2層含義,官方定義爲 formal搜索和informal protocol。前者和Java接口同樣。informal protocol中的方法屬於設計模式考慮範疇,不是必須實現的,可是若是有實現,就會改變類的屬性。java

5.你瞭解哪些設計模式?(MVC、觀察者、代理、單例除外)

MVVM (Model——View——ViewModel)

MVVM:一個 MVC 的加強版,Model 層天然少不了,ViewModel 表示網絡請求、視圖頁面邏輯和一些複雜業務邏輯代碼從 Controller 剝離出來生成一個新的對象,以減小 controller 層的業務邏輯和頁面邏輯 。
MVVM 能夠兼容你當下使用的 MVC 架構。
MVVM 增長你的應用的可測試性。
MVVM 配合一個綁定機制效果最好。
(MVC、觀察者、代理、單例 這些就不說了,自行百度吧)ios

6.MVVM 全稱? 是否使用過 MVVM

請看第五題。git

7.寫出如下屬性在 MRC 環境中的賦值方法。

@property(nonatomic, copy) NSString *apple;
---------------------------------------------
- (void)setApple:(NSString *)apple  // setter
 {
    if(_apple != apple){
        [_apple release];
        _apple = [apple copy]; // 若是屬性裏面的是retain 就將copy 換成 retain
    }
 }  
- (NSString *)apple                 // getter 
{
    return [[_apple retain] autorelease];
}
----------------------------------------------

8.聲明一個內容爲 "iOS" 的全局非靜態字符串常量。

NSString *string = @"ios";
靜態類中的成員加入static修飾符,便是靜態成員.全部沒有加Static的成員都是非靜態成員.

9.寫出如下代碼運行結果:

NSlog@(@"3");
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(1*NSEC_PER_SEC)),dispatch_get_main_queue(),^{
    dispatch_sync(dispatch_get_main_queue(),^{
        NSLogy(@"2");
    });
});
NSLog(@"1");

輸出爲:3; 
發生主線程鎖死。

10.如下寫法會致使哪些問題?

@property (copy)NSMutableArray *apples;

兩個問題:一、添加,刪除,修改數組內的元素的時候,程序會由於找不到對應的方法而崩潰.由於 copy 就是複製一個不可變 NSArray 的對象;二、使用了 atomic 屬性會嚴重影響性能 ;github

11.談談 instancetype 和 id 的區別

相同點:
做爲方法的返回類型
不一樣點:
一、instancetype 能夠返回和方法所在類相同類型的對象,id只能返回未知類型的對象。
二、instancetype只能做爲返回值,id能夠做爲參數.
http://blog.sina.com.cn/s/blog_139cc81e90102vvw3.htmlobjective-c

未完 待續設計模式

相關文章
相關標籤/搜索