答: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;
37. 在应用中可以创建多少autorelease对象,是否有限制?
答案:无
38. 如果我们不创建内存池,是否有内存池提供给我们?
答:界面线程维护着自己的内存池,用户自己创建的数据线程,则需要创建该线程的内存池
39. 什么时候需要在程序中创建内存池?
答:用户自己创建的数据线程,则需要创建该线程的内存池
40. 类NSObject的那些方法经常被使用?
答:NSObject是Objetive-C的基类,其由NSObject类及一系列协议构成。
其中类方法alloc、class、 description 对象方法init、dealloc、– performSelector:withObject:afterDelay:等经常被使用
41. 什么是简便构造方法?
答:简便构造方法一般由CocoaTouch框架提供,如NSNumber的 + numberWithBool: + numberWithChar: + numberWithDouble: + numberWithFloat: + numberWithInt:
Foundation下大部分类均有简便构造方法,我们可以通过简便构造方法,获得系统给我们创建好的对象,并且不需要手动释放。
42. 如何使用Xcode设计通用应用?
答:使用MVC模式设计应用,其中Model层完成脱离界面,即在Model层,其是可运行在任何设备上,在controller层,根据iPhone与iPad(独有UISplitViewController)的不同特点选择不同的viewController对象。在View层,可根据现实要求,来设计,其中以xib文件设计时,其设置其为universal。
43. UIView的动画效果有那些?
答:有很多,如 UIViewAnimationOptionCurveEaseInOut UIViewAnimationOptionCurveEaseIn UIViewAnimationOptionCurveEaseOut UIViewAnimationOptionTransitionFlipFromLeft UIViewAnimationOptionTransitionFlipFromRight UIViewAnimationOptionTransitionCurlUpUIViewAnimationOptionTransitionCurlDown
44. 在iPhone应用中如何保存数据?
答:有以下几种保存机制:
1).通过web服务,保存在服务器上
2).通过NSCoder固化机制,将对象保存在文件中
3).通过SQlite或CoreData保存在文件数据库中
45. 什么是coredata?
答:coredata是苹果提供一套数据保存框架,其基于SQlite
46. 什么是NSManagedObject模型?
答:NSManagedObject是NSObject的子类 ,也是coredata的重要组成部分,它是一个通用的类,实现了core data 模型层所需的基本功能,用户可通过子类化NSManagedObject,建立自己的数据模型。
47. 什么是NSManagedobjectContext?
答:NSManagedobjectContext对象负责应用和数据库之间的交互。
48. 什么是谓词?
答:谓词是通过NSPredicate,是通过给定的逻辑条件作为约束条件,完成对数据的筛选。
predicate = [NSPredicate predicateWithFormat:@"customerID == %d",n];
a = [customers filteredArrayUsingPredicate:predicate];
49. 和coredata一起有哪几种持久化存储机制?
答:存入到文件、 存入到NSUSErDefaults(系统plist文件中)、存入到Sqlite文件数据库
50. 谈谈对Block 的理解?并写出一个使用Block执行UIVew动画?
答:Block是可以获取其他函数局部变量的匿名函数,其不但方便开发,并且可以大幅提高应用的执行效率(多核心CPU可直接处理Block指令)
[UIView transitionWithView:self.view
duration:0.2
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{ [[blueViewController view] removeFromSuperview]; [[self view] insertSubview:yellowViewController.view atIndex:0]; }
completion:NULL];
51. 写出上面代码的Block的定义。
答:
typedef void(^animations) (void);
typedef void(^completion) (BOOL finished);
52. 试着使用+ beginAnimations:context:以及上述Block的定义,写出一个可以完成
+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);操作的函数执行部分
答案:无
53. 做过的项目是否涉及网络访问功能,使用什么对象完成网络功能?
答:ASIHTTPRequest与NSURLConnection
54. 简单介绍下NSURLConnection类及+ sendSynchronousRequest:returningResponse:error:与– initWithRequest:delegate:两个方法的区别?