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);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏极客猴

基础知识 | 使用 Python 将数据写到 CSV 文件

我们从网上爬取数据,最后一步会考虑如何存储数据。如果数据量不大,往往不会选择存储到数据库,而是选择存储到文件中,例如文本文件、CSV 文件、xls 文件等。因为...

1002
来自专栏用户2442861的专栏

网易2011笔试题详解

http://blog.csdn.net/silangquan/article/details/18051675

551
来自专栏Java技术分享

Java基础常见英语词汇

Java基础常见英语词汇(共70个) OO:object-oriented ,面向对象 OOP: object-oriented programming,...

5027
来自专栏非典型技术宅

Swift多线程之Operation:异步加载CollectionView图片1. Operation 设置依赖关系2. 前置知识点内容3. CollectionView中图片进行异步加载

2007
来自专栏Golang语言社区

Go语言是彻底的面向组合的并发语言

面向组合编程从AOP的Mixin,然后到Ruby的Traits,直至DCI设计,包括Scala的trait的组合设计,这些都有一个共同特点,组合特性是显式的,也...

3326
来自专栏Java大联盟

Java爬虫之匿名代理IP的获取

2183
来自专栏喔家ArchiSelf

全栈Python 编程必备

Python作为一种编程语言,被称为“胶水语言”,更被拥趸们誉为“最美丽”的编程语言,从云端到客户端,再到物联网终端,无所不在,同时还是人工智能优选的编程语言。

4065
来自专栏iOS技术

iOS 文本输入控制(献上框架)

我们在业务开发中,往往会遇到需要限制文本输入的需求,比如只能输入数字、不能输入空格,稍微复杂一点的比如小数点后最多两位的价格输入。当然,若你的正则表达式玩儿得很...

37012
来自专栏对角另一面

lodash源码分析之chunk的尺与刀

以不正义开始的事情,必须用罪恶使它巩固。 ——莎士比亚《麦克白》 最近很多事似乎印证了这句话,一句谎言最后要用一百句谎言来圆谎。 本文为读 lodash...

2290
来自专栏C/C++基础

CVTE2016春季实习校招技术一面回忆(C++后台开发岗)

2016.3.15,参加了CVTE的技术面,很不幸,我和我的两位小伙伴均跪在了一面。先将当日的面试内容汇总如下,供后来者参考。我们三人各自也都总结了失败的原因,...

531

扫码关注云+社区

领取腾讯云代金券