zoukankan      html  css  js  c++  java
  • iOS 面试总结 二

    1.用三种方法生成内容为数字 1,2 ,3 的可变数组。(使用Objective-C,尽量一行代码实现)

    //方法一
    NSMutableArray *arr1 = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3",nil];
    //方法二
    NSMutableArray *arr2 = [[NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];
    //方法三
    NSMutableArray *arr3 = [NSMutableArray addObjectFromArray:arr];
    

    2.Objective-C 中,分类(Category)和扩展 (Extension)的异同? ##?

    • 相同:都可以给类添加额外的方法;
    • 不同:分类只能添加方法不能添加属性,扩展可以点击属性和方法,但方法一对哟啊实现。
    • category和extensions的不同在于后者可以添加属性。另外后者添加的方法是必须要实现的。
      extensions可以认为是一个私有的Category。

    3. 你了解哪些 KVO 的开源封装?##

    KVOController https://github.com/facebook/KVOController
    不是特别了解这方面 在git上找个了start最多的。

    4.是否了解Java? Java 中的Interface 与 Objective-C 中的 Protocol 有哪些区别?

    OC中的代理有2层含义,官方定义为 formal搜索和informal protocol。前者和Java接口一样。informal protocol中的方法属于设计模式考虑范畴,不是必须实现的,但是如果有实现,就会改变类的属性。

    5.你了解哪些设计模式?(MVC、观察者、代理、单例除外)

    MVVM (Model——View——ViewModel)

    MVVM:一个 MVC 的增强版,Model 层自然少不了,ViewModel 表示网络请求、视图页面逻辑和一些复杂业务逻辑代码从 Controller 剥离出来生成一个新的对象,以减少 controller 层的业务逻辑和页面逻辑 。
    MVVM 可以兼容你当下使用的 MVC 架构。
    MVVM 增加你的应用的可测试性。
    MVVM 配合一个绑定机制效果最好。
    (MVC、观察者、代理、单例 这些就不说了,自行百度吧)

    6.MVVM 全称? 是否使用过 MVVM

    请看第五题。

    7.写出以下属性在 MRC 环境中的赋值方法。

    @property(nonatomic, copy) NSString *apple;
    ---------------------------------------------
    - (void)setApple:(NSString *)apple  // setter
     {
    	if(_apple != apple){
    		[_apple release];
    		_apple = [apple copy]; // 如果属性里面的是retain 就将copy 换成 retain
    	}
     }	
    - (NSString *)apple                 // getter 
    {
    	return [[_apple retain] autorelease];
    }
    ----------------------------------------------
    

    8.声明一个内容为 "iOS" 的全局非静态字符串常量。##

    NSString *string = @"ios";
    静态类中的成员加入static修饰符,即是静态成员.所有没有加Static的成员都是非静态成员.
    

    9.写出以下代码运行结果:

    NSlog@(@"3");
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(1*NSEC_PER_SEC)),dispatch_get_main_queue(),^{
    	dispatch_sync(dispatch_get_main_queue(),^{
    		NSLogy(@"2");
    	});
    });
    NSLog(@"1");
    
    输出为:3; 
    发生主线程锁死。
    

    10.以下写法会导致哪些问题?

    @property (copy)NSMutableArray *apples;
    

    两个问题:1、添加,删除,修改数组内的元素的时候,程序会因为找不到对应的方法而崩溃.因为 copy 就是复制一个不可变 NSArray 的对象;2、使用了 atomic 属性会严重影响性能 ;

    11.谈谈 instancetype 和 id 的区别

    相同点:
    作为方法的返回类型
    不同点:
    1、instancetype 可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象。
    2、instancetype只能作为返回值,id可以作为参数.
    http://blog.sina.com.cn/s/blog_139cc81e90102vvw3.html

    未完 待续

  • 相关阅读:
    举个手问个问题;
    c++字符串详解(转)
    Glide请求图片能携带Cookie的哟!
    Glide加载异常调试
    Notification中使用Glide
    manifest中读取<meta-data>
    Glide 魔法般的自定义扩展
    服务端报错死循环,无法输出错误页面问题
    android必须要进行为不同分辨率设备切图
    TextView无法通过setText设值
  • 原文地址:https://www.cnblogs.com/ting-miao/p/5851480.html
Copyright © 2011-2022 走看看