码迷,mamicode.com
首页 > 移动开发 > 详细

iOS面试题五

时间:2015-08-20 06:56:31      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:面试 ios

1.Objective-C 有私有方法吗?私有变量呢?如果没有的话,有没有什么代替的方法?

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

没有私有方法,有私有变量,所有实例变量默认都是私有的,所有实例方法默认都是公有的

私有方法可以用 category extension 来代替


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

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


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

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

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


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

UIKeyboardDidShowNotification(键盘弹出通知)

UIKeyboardWillHideNotification (键盘消失通知)


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


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

AFNetworking,SDWebimage,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对象 ,如果整个过程没有响应这个事件,则该事件被丢弃。一般情况下,在响应者链中只要有对象处理事件,事件就会传递。


本文出自 “阿成的博客” 博客,请务必保留此出处http://fanyuecheng.blog.51cto.com/9529438/1686180

iOS面试题五

标签:面试 ios

原文地址:http://fanyuecheng.blog.51cto.com/9529438/1686180

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!