- 简述你对UIView、UIWindow和CALayer的理解
UIView 是用来显示内容的视图,可以处理用户事件
CALayer是用来绘制内容的,对内容进行动画处理依赖UIView进行显示,不能处理用户事件
UIView来自CALayer,高于CALayer,是CALayer高层实现与封装。 UIView的所有特性来源于 CALayer支持
UIWindow是一种特殊的UIView,通常在一个App中只有一个应用的窗口UIWindow
2 写一个完整的代理,包括声明,实现
(1) 创建一个新的类ChangeTextViewController,并创建相应的xib文件
(2) 在ChangeTextViewController.h中声明一个协议ChangeTextViewDelegate;
@protocal ChangeTextViewDelegate <NSObject>
-(void)textEntered:(NSString *)text;
@end
添加一个代理的声明
@property (nonatomic, assign) id< ChangeTextViewDelegate >delegate;
(3) 在ChangeTextViewController.xib里添加一个按钮,按下这个按钮返回到secondView 中,并更新字符串。对save按钮的响应函数为
-(IBAction)saveButtonClicked:(id)sender{
if([delegate respondsToSelector:@selector(textEntered:)]){
[delegate textEntered:textEntered.text];
}
[self dismissModalViewControllerAnimated:YES];
}
(4) 在本例中,SecondViewController 是ChangeTextViewController对象的代理。我们要对SecondViewController做相应的设置满足代理的条件 。首先SecondViewController.h 中声明遵循ChangeTextViewDelegate 。然后编辑ChangeText按钮的响应函数-(IBAction)changeText:(id)sender;
-(IBAction)changeText:(id)sender{
ChangeTextViewController *CTViewController =[[ChangeTextViewController alloc] initWithNibName:@“ ChangeTextViewController” bundle:nil];
ChangeTextViewController.delegate = self;
[self presentModalViewController:CTViewController animated:YES];
}
3 分析JSON、XML的区别?JSON、XML解析方式的底层是如何处理的?
JSON数据小,易解析,编码不复杂
XML数据大 ,编码比较复杂
JSON中以key/value形式保存,大多数是字典数组模式
XML中则是<>形式保存
XML目前设置两种解析方式:DOM 和SAX
DOM是把一个数据交换格式XML看成一个DOM对象,需要把XML文件整个读入内存,这一点和JSON的原理是一样的,但是XML要考虑父节点和子节点,这一点上JSON的解析难度小一点,因为JSON构建于两种结构:key/value 键值对集合 ;值的有序集合,可以理解为数组
SAX不需要整个读入文档就可以解析出内容进行处理,是一种逐步解析的方法。程序可以随时终止解析。试用于大规模的解析。这一点,JSON目前做不到。
也就是说 JSON只提供整体解析方案,而这种方法只在解析少的数据时才起到良好的效果,而XML提供了对大规模数据逐步解析方案,很适合对大量数据的处理。
4 ViewController 的 didReceiveMemoryWarning 是在什么时候被调用的?默认的操作是什么?
当应用程序的内存使用接近系统最大内存使用时,应用程序向系统发送警告;
这时系统会调用方法向所有的viewController发送内存警告
5 面向对象的三大特征,并作简单的介绍
封装 继承 多态
封装 : 把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承:子类继承父类所有的方法和属性
多态: 第一种 不同类型的对象 在响应同一个方法时不同的实现方法
第二种 父类型的指针可以指向子类型的对象
//Animal * a =[[ [self class] alloc] init] ———Animal便利构造器的内部,为子类使用
Animal * dog = [[Dog alloc] init];
第三种 参数多态
- (void)feedAnimal:(Animal *)animal;
Student * stu = [[Student alloc] init];
[stu feedAnimal :dog];