iOS 面试题(十)

  1. 如何将产品进行多语言发布?
    在工程InfoPlist.strings中添加发布时需要的语言,并在Info.plist中添加新的属性Application has localized display name 设置类型为boolean并将value设置为YES
 创建”.strings”文件进行字符串 图片和其他文件的多语言处理 

2   如何将敏感字变成**
    // 存取敏感字的数组

    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);

3  objc中的减号与加号代表什么?
    前置加号(+)的方法为类方法 这类方法是可以直接用类名来调用的。它的作用是创建一个实例,有人把它称为创建实例的工厂方法
    前置减号(-)的方法为实例方法,必须使用类的实例才可以调用

4  单例目的是什么,并写出一个
    目的:封装一个共享的资源 提供一个固定的实例创建的方法  提供一个标准的实例访问接口 

 
  

+ (Singleton *)sharedInstance

{

    static Singleton *_instance;

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        _instance = [[self alloc] init];

    });

    return _instance;

}

5 说说响应链

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

响应者链的过程:

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

经典响应路线图

First Responser->The Window ->The Application->App Delegate

正常的响应者链流程经常被委托打断,一个对象可能将响应工作委托给另一个对象来完成(通茶是视图控制器 viewController)

猜你喜欢

转载自blog.csdn.net/a_ss_a/article/details/38454495