自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZeroOnet的博客

从零开始,厚积薄发,只为不断的成长......

  • 博客(63)
  • 问答 (2)
  • 收藏
  • 关注

原创 在项目中写一些冗余代码

#引子最近,扇贝单词书改版上线了,但根据Bugly的追踪日志发现:在iOS 9.x.x设备上,当用户获取单词书分类信息时,会出现莫名的闪退(专业地说是程序崩溃)。做为这一块的开发人员,自然而然要负起修复这个异常的责任!(外加深刻地自发地过失检讨)借助Xcode的断点调试功能,我开始了问题的回溯与分析。#过程看着这个崩溃在主函数的异常,我们都会感到很“亲切”!第一步当然是打开全局的异常断点,观察一下是

2017-12-17 22:32:55 2449

原创 code VS SB && _XX VS self.XX

前言坦白来说,我是storyboard / xib重度使用患者。因为当时在学习Cocoa Touch组件时候,被这种拖控件拽关联的“所见即所得”的界面搭建方式所深深吸引了,从此便入了iOS开发的坑。颇有种“一入传销深似海”的感觉,(⊙﹏⊙)b!

2017-12-03 14:54:06 677 1

原创 音频配置 & iPhone X的适配

前言

2017-11-19 15:38:10 842

原创 翻转单向链表

#引子之前在哔哩哔哩复试时,面试官给我出了一道简单的数据结构题:翻转单链表。但是我在写代码之前询问了一下,结果是要求节点值改变还是整个链接顺序都要变。他说就简单改变值嘛!(估计问这个问题时被鄙视了)于是我就用了一个数组来存放遍历链表所得到值,然后反序赋值来解决问题。(很low,/(ㄒoㄒ)/~~)这篇文章就通过改变整个链接顺序来实现翻转单向链表做一个简单的分析与实现,也算是对这道题做出一个合适的解答

2017-10-18 17:46:29 503

原创 狂想者 & 践行者

前言在保研失败后,我就加入到了找工作的大军中。就我所在的专业:电子信息工程(而我将要从事的工作却是在和计算机专业的同学相互竞争),我一直在思考课堂上课程学习的意义。起初,能够说服自己好好学习,考出好成绩的动机是争取保研。同时为了能够提高自己的竞争力(或者说是做自己真正想要做的事,也算是做两手准备吧!),我还必须得倾注一部分时间去学习iOS开发的知识。这样做的结果自然而然比那些一门心

2017-10-14 11:31:44 648

转载 我是一个线程

头一次见到如此别开生面讲解技术的文章:我是一个线程。文章中以拟人的思维方式,通过第一视觉讲解了多线程的调度、CPU时间片、线程池、多线程竞态等问题,也提及到了容易出现线程死锁的问题所在和相关的解决措施。看完感觉对相关方面的认知又有些不同了,要是所有的知识点都能做如此生动的例子转换,相信会有更多人投入到程序员的世界里,真是令人憧憬啊!(滚,少来和我抢饭碗!)

2017-10-11 15:46:50 851

转载 Runloop详解

主要推荐两篇结合Runloop源码综合分析的博客,文中从Runloop角度解释了自动释放池、延时回调、触摸事件、屏幕刷新等的实现。文章内容信息量较大,需要足够多的时间去阅读理解,相信你又足够耐心看完它,之后也会觉得收获满满!郭曜源:深入理解Runloop 李峰峰:iOS Runloop详解

2017-10-09 16:59:20 392

原创 iOS版QQ的黏性下拉刷新效果简易实现

前言对于市面上用户群体较大的App来说,Android和iOS两个版本的某些部分的使用体验有些差异。这种现象的起因或归结于平台的操作系统本身的不同,也可以想成是充分利用平台本身提供的资源,打造符合其使用习惯的应用。为了和文题相关,这里就举例QQ来说明。Android版本的下拉刷新就是一个翻转的小箭头效果,而iOS版本的却是其平台本身很经典的牛皮糖(黏性)效果。考虑到Tencent在后来推出针对强迫症

2017-10-05 11:03:19 1732

原创 Two Sum - LeetCode

#引子这是一个在LeetCode上面难度被标明为Easy的二元算法问题(即已知输入求输出),描述为: Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would

2017-09-30 10:53:44 364

原创 括号匹配

#引子得益于IDE的强大,我们的程序开发效率大幅提升。当我们涉及到函数的多重嵌套调用时(当然不建议这么写),如果只是手写的话,很可能就会多写或者漏写括号。在Xcode中,它会很友好的帮我们加上,而在这之前的一个处理就是括号匹配的判断。#实现当然,这里不会有如何在匹配失败后正确填补括号的程序实现,而能够给出的是一个简单的匹配判断的示例,程序会告诉你匹配的结果以及符号匹配的对数,如下:#include

2017-09-29 10:34:04 629

原创 翻转二叉树

#引子#实现#总结

2017-09-22 11:30:09 642

原创 从运行时看Block——披着函数外衣的结构体

先保存着后面写

2017-09-15 10:14:40 547

原创 相反数问题

#引子或许你已经知道了问题的描述,不过这里在重复一遍,因为很羞赧的说:“这个问题,我栽了个大跟头!”(尽情嘲笑我吧!/(ㄒoㄒ)/~~)一个整数1234与它倒序数4321和称之为相反数。现在的问题要求是:从控制台输入一个整数n (1 ≤ n ≤ 10 ^ 5),输出它的相反数。如1234,就输出1234 + 4321 = 5555。#从容入坑既然待处理的值是一个整数,一个简单的想法是把输入的数用一个

2017-09-10 11:33:11 1954

原创 统计`数组`元素出现的次数

#引子相信你注意到了标题中数组二字被标识了引号,也相信你肯定看到过相应的笔试题。题目中总是会出现集合或数组等字样,然后给出输入输出示例,最典型的输入示例是这样的: 1, 2, 3, 5, 6, 7, 88, 8, 3如果我们仔细审阅题目的话,会发现它的核心在于统计次数,那么就会察觉诸如集合之类的词可能是给我们埋下的坑,因为你需要根据测试数据的输入将它存储到对应的数据结构中。而这其中有需要判断有

2017-08-30 14:01:53 1589

原创 简而繁的BlocksKit

前言意如分类标题那样,笔者打算开始探究框架与源码。毫无疑问,这其中会遇到各种各样的挑战,但是我觉得我们应尽早走出这一步,不然就错过了很多的精彩。也许这精彩是更加开阔的程序视野,亦或是逻辑思维与编程能力的提升,这其中对耐心与意志的磨炼绝对会让人十分“酸爽”。而这简而繁BlocksKit就成为了第一道菜,为什么呢?因为之前对它的认知就是对系统API的block方式调用的高度封装,这是它简单的使

2017-08-18 11:43:35 1705

原创 Unit 8

Masonry如何为视图添加约束Masonry 使用分类的方式为UIKit 添加一个方法 mas_makeConstraint, 这个方法里取消了视图的autoresizing,即self.translatesAutoresizingMaskIntoConstraints = NO,使得AutoLayout生效。并接受了一个 block,这个 block 有一个 MASConstraintMa

2017-08-14 11:27:48 424

原创 Unit 7

为什么OC中很少用@try、@catch

2017-08-09 17:17:25 339

原创 版本迭代与App Store上架

前言自从Xcode8引入了Automatic manage signing,广大iOS Developer终于松了很多口气了。(幸运的我是在这之后才有上架的经历,嘿嘿!)现在的上架也就不再那么多坑点了,很多步骤都是水到渠成。这篇博客就分享一些我在这过程中的经验,同时也会粗略演示上架的过程和注意事项,最有价值的是两个被拒的原因,一定不要错过哟!版本迭代之前实验室里做过的一个关于智能停车的项目——停如意

2017-07-26 16:16:20 1049

原创 Unit 6

什么是沙盒机制?沙盒包含了哪些文件,分别的应用场景是什么?SandBox(沙盒)是iOS管理App的一种安全机制,它规定了应用程序只能访问系统为它创建的文件夹里的内容。下图是一个App的文件夹分级:Documents:Apple建议将程序中创建的文件或者浏览到的文件数据存储到这个文件夹下,iTunes备份和恢复时会包含这个文件夹;Library: -> Caches:程序在使用过

2017-07-23 20:00:57 473

原创 Unit 5

什么是垃圾回收机制垃圾回收(Garbage Collection,简称GC)的理论主要基于一个事实:大部分对象的生命周期都很短。所以GC将内存中的对象主要分成两个区域:Young区和Old区。对象先在Young区被创建,然后如果经过一段时间还存活着,则被移动到Old区。由于这两个区里的对象特点不同,采用的内存回收算法也不同。Young区的对象因为大部分生命周期都很短,每次回收之后只有少部分

2017-07-08 17:24:10 535

原创 一个高度使用百度地图的App开发实践总结

前言终于,在大学毕业前完完整整经历了一个商业项目。但在完成开发的时候,正值大三下期末考试期间,无赖地着眼于实现本身匆匆完成了功能需求(只是前期的要求,原因你懂得!),就去忙着复习准备考试了。因为我想尽可能地努力以获去高分来达到某种目的,所以这就需要更多的时间付出了。前期的草率也为后期的功能模块的增加及优化埋下了隐患,也有部分原因是实验室的项目规格本身就与市场上开发公司所做的有比较大的差异,即:UI设

2017-07-05 17:02:49 1793

转载 Objective-C Autorelease Pool 的实现原理

毫无疑问,看源代码是理解objc各种机制最有效的手段。(然而,我还没怎么看)凡是有水平的讲解语法的博文,无一不有实现源代码的展示,就像下文提到的讲解autoreleasepool的文章。好吧!先不管是否理解到,先说出通过文章get到的点:(其实苹果的官方文档里关于使用自动释放池已经给出了建议)如果你编写的程序不是基于 UI 框架的,比如说命令行工具;如果你编写的循环中创建了大量的临时对象;如果

2017-07-04 15:18:41 532

原创 PART 5

便利构造函数既然要说便利构造函数(Convenience Initializer)就不得不先提起指定构造函数(Designated Initializer)。前者是Swift特有的概念,后者是OC和Swift共有的初始化对象的方式,形如://OC- (instancetype)initWithXXXX { if (self = [super init]) { }

2017-06-28 20:48:41 353

转载 关于 Storyboard 的一些争论

这是喵神的一篇文章,至于大神文章是不是写得就那么好的问题,你看了就知道了!这篇文章旨在说明目前关于手写界面和用SB构建的一些争论焦点以及对SB天生的一些缺点和不足给出一些实践的参考,废话就这么多了,链接如下:(其实你完全可以订阅他的文章)王巍的技术博客:再看关于 Storyboard 的一些争论

2017-06-10 11:47:47 383

转载 RSA算法原理

如果你接触过数据加密的话,就一定听过RSA非对称加密算法的大名,最近肆虐全球的勒索病毒的核心技术就是它。不得不感慨一句:科学是一把双刃剑。下面这篇文章以简单的例子详细讲解了RSA的整个加密过程以及其中涉及到得数论知识,可以让你更加理解RSA的完整的流程,非常有营养的内容,值得细细体味。阮一峰的网络日志:RSA算法原理(注:文中的一些重要图片遗失,下面这个链接是转载网页,信息完整)伯乐在线:RSA算法

2017-05-18 18:04:59 483

转载 iOS百度地图API的深入使用

这是一篇关于百度地图在iOS平台上使用的文章,包含了许多使用例子的时间,其中对我来说最有用的就是对于overlay的各种场景使用的教学。对于想在百度地图上画区域、轨迹之类的话,它是不可多得的好文章!简书:iOS百度地图v2.9.1API的详细使用(二)

2017-05-16 18:43:27 462

原创 PART 4

当UINavigationController与UITabBarController同时存在时,如何让两者的标题互不影响开门见山,代码如下:self.tabBarController.navigationItem.title = @"XXX";self.tabBarItem.title = @"XXX";

2017-05-08 19:57:43 366

原创 iOS平台上aa(见缝插针)游戏的简易实现

前言

2017-04-25 20:48:41 8285 4

原创 Unit 4

xian

2017-04-15 12:58:40 677

原创 Unit 3

使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么?答案是:在ARC和MRC下均不需要。以下代码摘自2011,Apple API官方文档 - Associative References:(在MRC下)static char overviewKey;NSArray *array = [[NSArray alloc] initWithObjects:@

2017-04-12 20:52:43 489

原创 Unit 2

@synthesis与@dynamic有什么区别?

2017-04-06 15:40:44 450

原创 Unit 1

什么时候用weak关键字,相比assign有什么不同?

2017-04-03 22:01:49 608 1

原创 九宫格解锁的完全实现

前言不记得在使用诺基亚的那些日子,为了一个九宫格解锁,在应用商城里下了多少流氓软件。最后无功而返的时候,那种郁闷的心情恨不得把手机给砸了!不得不承认,九宫格解锁的一时风靡,以致于Android阵营的很多手机都内置了这一解锁选项,比如华为。然,Apple官方却没有提供这方面的选择。唉!谁叫人家肌肉壮硕呢?有钱任性呢?(ps:有了指纹解锁还要这个?No kidding!)在网上Search了N久,没有找

2017-03-30 20:55:57 3795

原创 归并排序

以下来自百度百科 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 基于比较式的排序算法(Comparison based sorting algori

2017-03-18 17:21:34 682

原创 一个简易的下拉刷新松耦合实践

前言在iOS平台,许多App的下拉刷新都是使用的MJRefresh这个开源库,笔者所接触开发过的几个App就是这样。当然还有很多效果酷炫的下拉刷新,真是不得不佩服开源界大神们的创意!这里是一些厉害框架的集合,你可以看看!笔者是一个Android粉(ps:蒙谁呢,不就是舍不得肾嘛!),在使用起点读书这一App时,发现它所使用的下拉刷新十分简约,而且也能一定程度上吸引用户的注意,减少用户的心里等待时间。

2017-03-16 20:40:18 678

原创 编译的基本步骤

在笔者身边(普通二本学校)所接触的搞IT的人士,很少有学习或者了解过编译原理的人。窃以为原因有两点:一是所从事的领域多数为顶层开发,学习算法都头疼的够呛了;二是学习氛围相对较差,没有开设相应的课程。(突然想起了一则笑话,说:一男上非诚勿扰,当女嘉宾们得知他是程序员后,一阵“咚嗡”,就没有然后了。)编译器对于笔者来说一直是一个很神奇的东西,它能帮我们“传达”我们想要告诉计算器的消息,也间接地让程序员的

2017-03-03 16:27:01 1994

转载 iOS响应者链,事件的传递

关于这个问题,笔者看了一些文章的阐述,但一直觉得没有抓住一些要点,导致看了没多久又模棱两可的了!这篇文章的讲解偏向于底层,作者也试着解释了一些名词,相信对各位会有所帮助。简书:iOS响应者链,事件的传递

2017-02-23 13:38:14 565

原创 一个音乐播放器的踩坑实践

前言这是这个系列的第二篇文章,和第一篇文章相同的是Demo中的资源文件和一些关键代码是搜索和学习得来的。一是因为没有相关的资源文件,譬如音乐文件、歌词文件、歌曲封面等;二是着实有点力有未逮的感觉(ps:在Demo具体功能中体现出来的就是歌词随着歌曲播放进度的不断滚动以及颜色的渐变,主要的原因是不知道lrc的文件内容以及一些API的用法,后面将会谈到。)。为了“发现更大的世界”(ps:其实就想捡点便宜

2016-12-09 20:06:08 959

原创 PART 3

验证O(f(N))的一个常用技巧)方法是在《数据结构与算法C++描述第三版》中学习到的,这里记录一下,方便后面的查阅。T(N)是凭借经验在运行程序时实际观察到的时间,f(N)是通过理论计算的出一个函数关系式。在N的某个范围内计算T(N) / f(N) = k(范围的不断增加通常以2的倍数隔开,如N = 2、4、6、8……)。如果k收敛于一个正常数,表明运行时间与f(N)理想近似;如果k收敛于0,说明

2016-11-30 11:15:58 565

原创 欧几里得算法时间复杂度简单分析

前言这个问题是在《数据结构与算法C++描述(第三版中文)》所遇到的,文中给出的迭代次数O(logN)的结果就像是教授所说的“显然”一样高深莫测,有点云里雾里的感觉!在“网罗”了一些资料后,在这里找到了自己想要的答案,笔者接下来就结合自己的理解列出文章中的求解过程。数学是科学的“皇后”在前言中提到那本书中也明确指出了欧几里得算法在实现过程理解上可能不是很难,但是想要得出其在平均情况下的性能需要大量的高

2016-11-28 20:27:41 16552 2

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除