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

凡经历过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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,946评论 1 180
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,173评论 25 709
  • 人要时时领受一种过客的感觉, 没有哪件事是非你不可的, 也没有哪一种东西是你能永远拥有的。 有这种心理准备, 生命...
    大象姐说心理阅读 2,985评论 0 0
  • 我在中医院附近租了个小旅馆,今天我想跟你们说说这两个房东,她们是亲生的两姐妹,但是相貌和性格却截然不同。 先说说姐...
    遇见歌声阅读 4,183评论 0 0
  • 今天小猴和小狗在草地上玩,小狗看见一根骨头,连忙去追。追着、追着没看清路,没看清路就掉进了大坑里面,小狗哭了。小猴...
    温柔而坚持2016阅读 1,729评论 0 0