iOS面试知识总结之代码片段

作者: 梧雨北辰 | 来源:发表于2018-02-28 13:38 被阅读2073次

    凡经历过iOS面试的我们总会发觉,即使实际开发中做过许多项目,也难免为一个普通的面试题受挫。这也许不是因为我们技术不过关,而是因为在平时我们忽略了怎样将用到的知识很好的表述出来。闲暇之余我把一些常见的iOS面试问题总结一下,即使不是为了面试,也有助于对基础知识的回顾。

    接下来通过五篇文章来整理这些知识:
    iOS面试知识总结之基本概念
    iOS面试知识总结之功能区分
    iOS面试知识总结之代码片段
    iOS面试知识总结之问题解决
    iOS面试知识总结之文章收录

    持续更新中....
    此篇总结在iOS面试中可能会被要求手写代码实现的问题,这里简要的汇总了这些代码:

    1.单例的两种写法

    单例的目的:通过特殊的构造在不同的地方可以得到同一个对象
    方法一:类方法加锁(使用synchronized关键字)

    static Person *ps;
    +(Person *)sharePerson{
        if (ps == nil) {
            @synchronized(self){
                //加上锁
                 ps = [[Person alloc] init];
            }
        }
        return  ps;
    }
    

    方法二:通过GCD方法创建

    //dispatch_once只执行一次,确保dispatch_once中的代码块在应用程序里面只执行一次,无论是不是多线程。
    + (Person *)sharePerson{
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            ps = [[Person alloc] init];
        });
        return  ps;
    }
    

    2.多任务合并的网络请求处理

    题目分析:10个请求要全部完成后,才执行某一功能。比如,下载10图片后合成一张大图,就需要异步全部下载完成后,才能合并成大图。
    实现思路:通过dispatch_group_t来实现,将每个请求放入到Group中,将合并成大图的操作放在dispatch_group_notify中实现。

    dispatch_queue_tqueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_group_tgroup = dispatch_group_create();
    dispatch_group_async(group, queue, ^{ /*加载图片1 */ });
    dispatch_group_async(group, queue, ^{ /*加载图片2 */ });
    dispatch_group_async(group, queue, ^{ /*加载图片3 */ }); 
    
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
       // 合并图片
    });
    

    3.使用NSLog输出一个浮点类型,保留一位小数

    //结果四舍五入,保留一个小数
    float money = 1.011;
    NSlog(@“%.1f”,money);
    

    相关文章

      网友评论

        本文标题:iOS面试知识总结之代码片段

        本文链接:https://www.haomeiwen.com/subject/nfvmxftx.html