标签:面试 ios
1.Objective-C 有私有方法吗?私有变量呢?如果没有的话,有没有什么代替的方法?
Objective-C 中的方法分为:静态方法和实例方法
没有私有方法,有私有变量,所有实例变量默认都是私有的,所有实例方法默认都是公有的
私有方法可以用 category 和 extension 来代替
2. #import、#include和@class有什么区别?
@class一般用于头文件中需要声明该类的某个实例变量的时候用到,它只是声明了一个类名,关于这个类的内部实现都没有告诉编译器,在m文件中还是需要使用#import。 而#import比起#include的好处就是不会引起交叉编译。
3.谈谈你对MVC的理解?为什么要用MVC?在Cocoa中MVC是怎么实现的?你还熟悉其他的OC设计模式或别的设计模式吗?
MVC就是Model-View-Controller的缩写,M指的是业务模型,V指的是用户页面,C指的是控制器。MVC是架构模式,是讲M和 V的代码分离,从而使同那个一个程序可以使用不同的表现形式。 M:表示数据和业务规则,V是用户看到的并与之交互的页面,C是接受用户的输入并调用M和V取完成用户需求的。
单例模式,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
原文地址:http://fanyuecheng.blog.51cto.com/9529438/1686180