1.When to use NSMutableArray and when to use NSArray?
什么時候使用NSMutableArray,什么時候使用NSArray?
答案:當數組在程序運行時,需要不斷變化的,使用NSMutableArray,當數組在初始化后,便不再改變的,使用NSArray。需要指出的是,使用NSArray只表明的是該數組在運行時不發生改變,即不能往NSAarry的數組里新增和刪除元素,但不表明其數組內的元素的內容不能發生改變。NSArray是線程安全的,NSMutableArray不是線程安全的,多線程使用到NSMutableArray需要注意。
2.Give us example of what are delegate methods and what are data source methods of uitableview.
給出委托方法的實例,并且說出UITableVIew的Data Source方法
答案:CocoaTouch框架中用到了大量委托,其中UITableViewDelegate就是委托機制的典型應用,是一個典型的使用委托來實現適配器模式,其中UITableViewDelegate協議是目標,tableview是適配器,實現UITableViewDelegate協議,并將自身設置為talbeview的delegate的對象,是被適配器,一般情況下該對象是UITableViewController。
? ? ? ?UITableVIew的Data Source方法有- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath;
3.How many autorelease you can create in your application? Is there any limit?
在應用中可以創建多少autorelease對象,是否有限制?
答案:無
4.If we don’t create any autorelease pool in our application then is there any autorelease pool already provided to us?
如果我們不創建內存池,是否有內存池提供給我們?
答案:界面線程維護著自己的內存池,用戶自己創建的數據線程,則需要創建該線程的內存池
5.When you will create an autorelease pool in your application?
什么時候需要在程序中創建內存池?
答案:用戶自己創建的數據線程,則需要創建該線程的內存池
6.When retain count increase?
什么時候內存計數會增加?
答案:見iOS面試題(一)
7.What are commonly used NSObject class methods?
類NSObject的那些方法經常被使用?
答案:NSObject是Objetive-C的基類,其由NSObject類及一系列協議構成。
其中類方法alloc、class、 description 對象方法init、dealloc、–?performSelector:withObject:afterDelay:等經常被使用
8.What is convenience constructor?
什么是簡便構造方法?
答案:簡便構造方法一般由CocoaTouch框架提供,如NSNumber的+?numberWithBool:+?numberWithChar:+?numberWithDouble:+?numberWithFloat:+?numberWithInt:
Foundation下大部分類均有簡便構造方法,我們可以通過簡便構造方法,獲得系統給我們創建好的對象,并且不需要手動釋放。
9.How to design universal application in Xcode?
如何使用Xcode設計通用應用?
答案:使用MVC模式設計應用,其中Model層完成脫離界面,即在Model層,其是可運行在任何設備上,在controller層,根據iPhone與iPad(獨有UISplitViewController)的不同特點選擇不同的viewController對象。在View層,可根據現實要求,來設計,其中以xib文件設計時,其設置其為universal。
10.What is keyword atomic in Objective C?
在Objetive-C什么時原子關鍵字
答案:atomic,nonatomic見iOS面試題(一)
11.What are UIView animations?
UIView的動畫效果有那些?
答案:有很多,如UIViewAnimationOptionCurveEaseInOutUIViewAnimationOptionCurveEaseInUIViewAnimationOptionCurveEaseOutUIViewAnimationOptionTransitionFlipFromLeftUIViewAnimationOptionTransitionFlipFromRightUIViewAnimationOptionTransitionCurlUpUIViewAnimationOptionTransitionCurlDown
12.How can you store data in iPhone applications?
在iPhone應用中如何保存數據?
答案:有以下幾種保存機制:
1.通過web服務,保存在服務器上
2.通過NSCoder固化機制,將對象保存在文件中
3.通過SQlite或CoreData保存在文件數據庫中
13.What is coredata?
什么是coredata?
答案:coredata框架是apple提供的一套通用自動的解決方案,包括了對象生存周期、對象關系圖、持久化機制。
補充答案:上面是翻譯的,按我個人理解coredata提供一種一機制,讓我們可以方便的把內存中對象,及對象間的關系,映射到coredata,然后由它為我們持久化數據。相比普通的文件數據庫SQlite,它的功能更強大,不需要我們先將對象數據format成SQL語句,存入數據庫,再用select語句讀出,而現在是從內存到coredata的數據管理,我們只需管理coredata的managed對象。
是蘋果提供一套數據保存
14.What is NSManagedObject model?
什么是NSManagedObject模型?
答案:NSManagedObject是NSObject的子類 ,也是coredata的重要組成部分,它是一個通用的類,實現了core data 模型層所需的基本功能,用戶可通過子類化NSManagedObject,建立自己的數據模型。
15.What is NSManagedobjectContext?
什么是NSManagedobjectContext?
答案:NSManagedobjectContext對象負責應用和數據庫之間的交互。
16.What is predicate?
什么是謂詞?
答案:謂詞是通過NSPredicate,是通過給定的邏輯條件作為約束條件,完成對數據的篩選。
predicate = [NSPredicate predicateWithFormat:@"customerID == %d",n];
a = [customers filteredArrayUsingPredicate:predicate];
17.What kind of persistence store we can use with coredata?
coredata有哪幾種持久化存儲機制?
答案:coredatat提供以下幾種存儲機制:XML(iOS系統不支持),自動存儲,SQLite,內存存儲。
補充說明:這個問題問的是,coredate框架的存儲機制,平時使用coredata時,更多關注的是managed的對象,這里是coerdata框架的存儲實現細節。BTW: 其他常用的持久化存儲方法 :存入到文件、?存入到NSUserDefaults(系統plist文件中)。