您的位置:首页 > 职场人生

iOS 面试总结

2016-03-09 15:43 411 查看
1、设计模式单例:

+ (UcanSDK*)shareUcanSDK

{

    static
dispatch_once_t once;

    dispatch_once(&once, ^{

        _ucanSDK = [[UcanSDK
alloc]init];

    }) ;

     return
_ucanSDK;

}

2、delegate 具体实现;代理的声明weak,用strong会出现循环引用,例如 A中有个delegate,在B中实现,B中有A的声明(A *a = [ A alloc]; )A的引用计数+1,在B中a.delegate = self(把A委托给B),B引用计数+1;导致循环引用;

3、scrollview 的delegate scrollviewDidScroll ;tableview&scrollview都继承于scrollview

4、frame&bounce :frame是相对于父视图的(x,y,width,height)x&y是相对于父视图定的 而bounce中x&y是相对于自身的,所以bounce中x&y为0;

5、ARC下weak引用计数为0时自动赋值nil,assign不会自动赋值会导致野指针;

6、动态库&静态库:静态库编译时链接到代码中,运行时不需要改变静态库;动态库编译时不会链接到代码中,运行时被载入;

7、宏预处理器中进行文本替换,没有类型,不做任何类型检查;A.h中 UIKIT_EXTERN
NSString *const Height;A.m中
NSString * const Height =
@"height”;这种全局的量有类型;知道类型的量在全局声明用const extern;static 局部静态变量

8、iOS中循环引用问
4000
题 block{self.tableView reloadData},block是独立的运行体,在其中间的的self会强引用导致循环引用,解决方法 _weak typeof(self)weakSelf = self;[weakSelf.tableView reloadData],在block中self若引用使用weakSelf;delegate声明使用weak;NSTimer :类持有了nstimer ,反过来nastier又持有了类,[NSTimer
scheduledTimerWithTimeInterval:_expired target:self selector 方法中target:self 是说nastier反过来持有了类,这样就会出现循环引用,所以在对象删除之前 [timer invalidate];timer = nil;

9、nil是个空的对象NULL是个空的指针

10、GCD线程、队列问题

11、IOS开发几种设计模式 :MVC model存储数据的模型(代码中常用的解析数据用的模型,数据处理写在这里 V:view 例如页面中的cell 一些自定义的控件,一些界面的东西写在这里等 C:controller 视图控制器,加载view;delegate模式 tableview例子 ;KVO模式 key_value observing 当指定的对象属性发生变化时,对象会接收到通知,

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context  

{  

    if([keyPath isEqualToString:@"price"])  

    {  

        myLabel.text = [stockForKVO valueForKey:@"price"];  

    }  

};单例模式 确保程序运行期某个类,只有一份实例,用于进行资源共享控制 

+ (UcanSDK*)shareUcanSDK

{

    static
dispatch_once_t once;

    dispatch_once(&once, ^{

        _ucanSDK = [[UcanSDK
alloc]init];

    }) ;

     return
_ucanSDK;

}

12、图片播放 carousel 制作banner广告页 滚动的scrollview
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: