iOS 面试题(七)

  1. 简述你对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];

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值