標籤:
1.NSNotification和KVO的區別和用法是什麼 ?什麼時候該使用通知,什麼時候該使用KVO,它們在實現上有什麼區別?如果用delegate 和protocol來實作類別似的功能可能嗎?如果可能會有什麼潛在的問題?如果不能為什麼 ?KVO只能監測屬性的變化,但是實現了自動監測,當屬性值變化時,會自動通知觀察者NSNotification比較靈活,可以監測的內容較多,但是需要被觀察者手動發送通知,觀察者才能響應。protocol通過添加一個NSArray也能實作類別似的功能,但是實現上需要自己處理delegate的添加與刪除,自己在屬性變化時手動通知,較繁瑣,易出錯。2.main檔案中UIApplicationMain有幾個參數,作用是什麼UIApplicationMain它接受4個參數。 其中argc和argv兩個參數來自於main()接受的兩個參數;另外兩個String型參數分別表示程式的主要類(principal class)和代理類(delegate class)。如果主要類(principal class)為nil,則預設為UIApplication UIApplicationMain會根據principalClassName建立UIApplication對象,然後根據delegateClassName建立一個delegate對象3. 什麼時候使用NSMutableArray,什麼時候使用NSArray?當數組在程式運行時,需要不斷變化的,使用NSMutableArray,當數組在初始化後,便不再改變的,使用NSArray。需要指出的是,使用NSArray只表明的是該數組在運行時不發生改變,即不能往NSAarry的數組裡新增和刪除元素,但不表明其數組內的元素的內容不能發生改變。NSArray是安全執行緒的,NSMutableArray不是安全執行緒的,多線程使用到NSMutableArray需要注意。4. nil和Nil有什麼區別 nil表示一個Objctive-C對象,這個對象的指標指向空。Nil定義一個指向空的類(是Class,而不是對象)5. 談談對MVC的理解簡單的理解: V對M是不能通訊的。 C對M通訊:API M對C通訊:Notification,KVO C對V通訊:Outlet V對C通訊:Target-action, Delegate,Datasource5. NSInteger與int有何不同#if __LP64__ || NS_BUILD_32_LIKE_64typedef long NSInteger;typedef unsigned long NSUInteger;#elsetypedef int NSInteger;typedef unsigned int NSUInteger;#endif6. id 聲明的對象有什麼特性?Id 聲明的對象具有運行時的特性,即可以指向任意類型的objcetive-c的對象;7. Objective-C記憶體管理的方式。你瞭解幾種Objective-C的記憶體管理主要有三種方式ARC、手動記憶體計數、自動釋放池(autoreleasepool)8.如何測試App的效能Porfile-> Activity monitor9. 如何檢測App記憶體泄露Porfile->Leaks10.如何過濾數組// 資料來源NSArray *dataArr = [NSArray arrayWithObjects:@"a1", @"abc1", @"abc4", @"abc2", nil];// 過濾對象NSArray *filterArr = [NSArray arrayWithObjects:@"abc1", @"abc2", nil];// 過濾器NSPredicate *thePredicate = [NSPredicate predicateWithFormat:@"NOT (SELF in %@)", filterArr];// 過濾後的新數組NSArray *resultArr = [[NSArray alloc]initWithArray:[dataArr filteredArrayUsingPredicate:thePredicate]];NSLog(@"過濾後的結果:%@",resultArr);11. UITableView繼承那個類?UIScrollView繼承那個類?UIView繼承那個類?UITableView 繼承 UIScrollViewUIScrollView 繼承 UIViewUIView 繼承 UIResponder12. UIView和UIWindw的關係?UIWindow的作用UIWindow 繼承UIView。作用:1.UIWindow作為一個容器,放所有的UIView2.將事件(例如:點擊事件、拖拉事件等)分發給 view。14. 淺複製和深複製的區別?淺層複製:只複製指向對象的指標,而不複製引用對象本身。深層複製:複製引用對象本身。15. 響應者鏈是什麼?事件被交由第一響應者對象處理,如果第一響應者不處理,事件被沿著響應者鏈向上傳遞,交給下一個響應者。一般來說,第一響應者是個視圖或控制項,並且首先對事件進行響應,如果第一響應者不處理該事件,事件就會被傳遞給它的視圖控制器,如果此視圖控制器不處理該事件,則將事件傳遞給父視圖,如果父視圖沒有響應,則該事件轉到父視圖控制器,以此類推,直到頂層視圖。接下來會沿著頂層視圖到視窗(UIWindow對象)再到程式(UIApplication對象)。如果UIApplication不響應該事件,該事件逐漸進入睡眠狀態。
IOS 面試題