前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS面试知识总结之代码片段

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

作者头像
梧雨北辰
发布2018-04-24 14:55:40
5910
发布2018-04-24 14:55:40
举报

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

1.单例的两种写法

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

代码语言:javascript
复制
static Person *ps;
+(Person *)sharePerson{
    if (ps == nil) {
        @synchronized(self){
            //加上锁
             ps = [[Person alloc] init];
        }
    }
    return  ps;
}

方法二:通过GCD方法创建

代码语言:javascript
复制
//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中实现。

代码语言:javascript
复制
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输出一个浮点类型,保留一位小数
代码语言:javascript
复制
//结果四舍五入,保留一个小数
float money = 1.011;
NSlog(@“%.1f”,money);
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.02.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.单例的两种写法
  • 2.多任务合并的网络请求处理
  • 3.使用NSLog输出一个浮点类型,保留一位小数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档