iOS面试题五

1.Objective-C 有私有方法吗?私有变量呢?若是没有的话,有没有什么代替的方法?设计模式

Objective-C 中的方法分为:静态方法和实例方法数组

没有私有方法,有私有变量,全部实例变量默认都是私有的,全部实例方法默认都是公有的架构

私有方法能够用 category extension 来代替app


2. #import#include@class有什么区别?ide

 @class通常用于头文件中须要声明该类的某个实例变量的时候用到,它只是声明了一个类名,关于这个类的内部实现都没有告诉编译器,m文件中仍是须要使用#import #import比起#include的好处就是不会引发交叉编译。spa


3.谈谈你对MVC的理解?为何要用MVC?在CocoaMVC是怎么实现的?你还熟悉其余的OC设计模式或别的设计模式吗?设计

 MVC就是Model-View-Controller的缩写,M指的是业务模型,V指的是用户页面,C指的是控制器。MVC是架构模式,是讲M V的代码分离,从而使同那个一个程序可使用不一样的表现形式。 M:表示数据和业务规则,V是用户看到的并与之交互的页面,C是接受用户的输入并调用MV取完成用户需求的。server

单例模式,Delegate模式,KVC模式,消息通知模式,Target/Action模式对象


4. 如何监测系统键盘的弹出?接口

UIKeyboardDidShowNotification(键盘弹出通知)

UIKeyboardWillHideNotification (键盘消失通知)


[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector() name:UIKeyboardWillShowNotification  object:nil];


5.举出5个以上你所熟悉的iOS  SDK库有哪些和第三方库有哪些?

AFNetworking,SDWebp_w_picpath,ShareSDK,MJRefresh,FMDB,MBProgressHUD


6.如何将产品进行多语言发布?

在工程InfoPlist.strings中添加发布时须要的语言,并在Info.plist中添加新的属性Application has localized display name 设置类型为boolean并将value设置为YES,建立".strings"文件进行字符串 图片和其余文件的多语言处理


7.如何将敏感字变成** ?

 // 存取敏感字的数组
    NSMutableArray *array = [[NSMutableArray alloc]init];
    // 向敏感字数组里添加元素
    NSString *element1 = @"敏感字";
    NSString *element2 = @"我";
    [array addObject:element1];
    [array addObject:element2];
    // 要判断的字符串
    NSMutableString *str = [[NSMutableString alloc]initWithString:@"我是敏感字"];
    for (int i = 0; i < array.count; i++) {
        // 敏感字替代字符串
        NSMutableString *replaceString = [[NSMutableString alloc]init];
        // 判断字符串是否包含指定字符串,返回位置和长度
        NSRange range = [str rangeOfString:array[i]];
        for (int j = 0; j<range.length; j++) {
            [replaceString appendString:@"*"];
        }
        // 某个范围用字符代替
        [str replaceCharactersInRange:range withString:replaceString];
    }
    NSLog(@"%@",str);


8.objc中的减号与加号表明什么?

前置加号(+)的方法为类方法 这类方法是能够直接用类名来调用的。它的做用是建立一个实例,有人把它称为建立实例的工厂方法

前置减号(-)的方法为实例方法,必须使用类的实例才能够调用


9. 单例目的是什么?

目的:封装一个共享的资源 提供一个固定的实例建立的方法  提供一个标准的实例访问接口,节省内存。


10 说说响应链

首先要明确的是:在IOS中,有响应者链对事件进行响应,全部的响应类都是UIResponder的子类,响应者链是由不一样的对象组成的层次结构,其中的每个对象将依次得到响应事件消息的机会。


响应者链的过程:

当事件发生的时候,响应链首先被发给第一个响应者(每每是事件发生的视图,也就是用户触摸屏幕的地方)事件将沿着响应者链一直传递下去,直到被接受并处理。通常来讲,第一响应是视图对象或者其子类,当其被触摸后事件就交它处理,若是它不处理,事件就会被传递给视图控制器UIViewController(若是存在)而后是它的父视图,以此类推直到顶层视图。接下来会沿着顶层视图(top View)到窗口(UIWidow对象)再到程序的UIApplication对象 ,若是整个过程没有响应这个事件,则该事件被丢弃。通常状况下,在响应者链中只要有对象处理事件,事件就会传递。

相关文章
相关标签/搜索