31.写一个完整的代理,包括声明,实现.代理:遵守协议的对象.@class MyView;第一步:指定协议:(协议名:类名+Delegate)@protocol MyViewDelegate@required-(void)changeViewBackgroudColor:(MyView *)view;@optional-(void)test;@end @interface MyView : UIView第二步:指定代理@property (nonatomic,assign)iddelegate;
@end
第三步:代理遵循协议.
第四步:代理实现协议里面的必须实现的方法和其他可选方法.
第五步:委托方通知代理开始执行方法.
32.分析json.xml的区别,底层如何实现?
Json:键值对.数据小,不复杂.便于解析,有框架支持,适合轻量级传输.作为数据包个数传输的时候效率更高.
xml:标签套内容.xml数据两较大,比较复杂.适合大数据量的传输.xml有丰富的编码工具,比如:Dom4j,JDom.解析方式有两种,一是通过文芳模型解析,另外一种遍历节点.
33.ViewController的didReceiveMemoryWarning是在什么时候被调用的?
1.当应用程序的内存使用接近系统的最大内存使用时,应用会向系统发送内存警告,这时候系统会调用方法向所有ViewController发送内存警告.
2.打开系统相机.
3.加载高清图片.
默认操作:把里面没有用的对象进行释放.
34.面向对象的三大特征,简单介绍.
封装:代码模块化,方便以后调用.
继承:子类继承父类的所有方法和属性.
多态:父类指针指向子类对象.
35.重写一个NSString类型的,retain方式声明name属性的setter和getter方法.
属性的三大特性:语义特性,原子特性,读写特性.
同时重写setter和getter方法,@synchronized name = _name,关联属性和实例变量.
- (void)setName:(NSString *)name{
if(_name != name){
[_name retain];
[_name release];
_name = name;
}
}
- (NSString *)name{
return [[_name retain]autorelease];
}
36.简述NotificationCenter.KVC,KVO,Delegate?并说明它们之间的区别?
NotificationCenter:消息中心.消息通知.
KVC:利用键-值间接访问类中的某个属性.
[self setValue:@"123" forKeyPath:@"name"];
NSLog(@"%@",[self valueForKeyPath:@"name"]);
KVO:利用键-路径间接访问类中的某个属性,也就是观察者模式(KVO+通知中心).基于KVC和通知中心,观察的是实例变量.
Delegate:用于多个类之间的传值.
37.What is lazy loading?
懒加载
38.对MVC的理解,好处?
MVC:是一种架构.model:数据处理,view:视图显示,controller:逻辑控制,负责视图和模型之间的通信.
高类聚,低耦合,提高代码的复用性.
39.监测键盘的弹出.
通知.
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector() name:UIKeyboardWillShowNotification object:nil];
40. 5个ios,sdk库和第三方库.
系统库:UIKit框架:负责应用程序的图形及事件驱动的关键基础,如:用户界面管理,图形和窗口支持.
Mapkit框架:地图.
Message UI框架:电子邮件
AV Foundation框架:可用于音频播放.
OpenAL框架:用于播放,可播放高质,高性能的网络音频
Core Data框架:将数据存储在SQLite数据库.
Core Media框架:播放视频.
第三方:SDWebImage :简化图片处理
ShareSDK 分享
SVProgressHUD 轻量级菊花
AFNetworkin 方便网络开发
FreeStreamer 播放音频