8 bestswifter

尚未进行身份认证

暂无相关简介

等级
TA的排名 9k+

大前端开发者需要了解的基础编译原理和语言知识

在我刚刚进入大学,从零开始学习 C 语言的时候,我就不断的从学长的口中听到一个又一个语言,比如 C++、Java、Python、JavaScript 这些大众的,也有 Lisp、Perl、Ruby 这些相对小众的。一般来说,当程序员讨论一门语言的时候,默认的上下文经常是:“用 xxx 语言来完成 xxx 任务”。所以一直困扰着的我的一个问题就是,为什么完成某个任务,一定要选择特定的语言,比如安卓开发

2017-06-24 22:35:32

细聊 Cocoapods 与 Xcode 工程配置

前言文章比较长,所以在文章的开头我打算简单介绍一下这篇文章将要讲述的内容,读者可以选择通篇细度,也可以直接找到自己感兴趣的部分。既然是谈 Cocoapods,那首先要搞明白它出现的背景。有经验的开发者都知道 Cocoapods 在实际使用中,经常遇到各种问题,存在一定的使用成本,因此衡量 Cocoapods 的成本和收益就显得很关键。Cocoapods 的本质是一套自动化工具。那么了解自动化流程背后

2017-01-09 13:49:03

我的 2016 年总结

时光飞逝,一转眼已经是一年过去了, 去年的今天我写下了第一篇年度总结:一个普通iOS开发者的2015大总结。在写作那篇文章之前,我觉得一年前的自己完全是一个傻逼;今天重读一遍以后,我感觉一年前的自己也非常傻逼。在写下这一年总结的同时,我也希望明年的自己在回顾这篇文章的时候,可以发出不屑的鄙视。实际上我认为: 刚开始学习的前五年是发展最快的五年,每一年都应该感觉到自己在过去的一年中发生了天翻地覆的

2017-01-04 18:15:27

深入理解 iOS 开发中的锁

摘要本文的目的不是介绍 iOS 中各种锁如何使用,一方面笔者没有大量的实战经验,另一方面这样的文章相当多,比如 iOS中保证线程安全的几种方式与性能对比、iOS 常见知识点(三):Lock。本文也不会详细介绍锁的具体实现原理,这会涉及到太多相关知识,笔者不敢误人子弟。本文要做的就是简单的分析 iOS 开发中常见的几种锁如何实现,以及优缺点是什么,为什么会有性能上的差距,最终会简单的介绍锁的底层实现原

2016-10-07 08:22:53

白话 Ruby 与 DSL 以及在 iOS 开发中的运用

阅读本文不需要预先掌握 Ruby 与 DSL 相关的知识何为 DSLDSL(Domain Specific Language) 翻译成中文就是:“领域特定语言”。首先,从定义就可以看出,DSL 也是一种编程语言,只不过它主要是用来处理某个特定领域的问题。广为人知的编程语言有 C、Java、PHP 等,他们被称为 GPL(General Purpose Language),即通用目的语言。与这些语言

2016-09-29 13:08:39

获取任意线程调用栈的那些事

BSBacktraceLogger是一个轻量级的框架,可以获取任意线程的调用栈,开源在我的GitHub,建议下载下来结合本文阅读。我们知道NSThread有一个类方法callstackSymbols可以获取调用栈,但是它输出的是当前线程的调用栈。在利用Runloop检测卡顿时,子线程检测到了主线程发生卡顿,需要通过主线程的调用栈来分析具体是哪个方法导致了阻塞,这时系统提供的方法就无

2016-08-29 09:51:20

移动端开发者眼中的前端开发流程变迁与前后端分离

写在最开始移动端与前端的区别前端开发的混沌时代后端 MVCMVC 方案实现MVC 的缺点与改进前端只写 DemoHTML 模板后端 MVC 架构总结AJAX 与前端 MVC前后端分离的缺点双端 MVC 不统一SEO性能不够集中 Or 分离Nodejs前后端分离的哲学Nodejs 分层实战应用风险控制总结参考资料写在最开始这是一篇面向移动端开发者的科普性文章

2016-08-20 08:57:31

为什么要用 Node.js

这是一个移动端工程师涉足前端和后端开发的学习笔记,如有错误或理解不到位的地方,万望指正。Node.js 是什么传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部分:渲染引擎和 JavaScript 引擎。前者负责渲染 HTML + CSS,后者则负责运行 JavaScript。Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快。Node.

2016-08-18 14:20:11

启用新域名bestswifter

告别2015,也要告别CSDN了。注册了一个新域名:bestswifter我的个人博客:bestswifter.com 我的简书博客:KtZhang 我的Github: https://github.com/649395594欢迎关注,欢迎交流还记得最初在QQ空间和新浪博客发表过一两篇技术文章,2015年初转到了CSDN。初来乍到,CSDN有以下几个特点顿时吸引了我:丰富的资源CSDN作为

2015-12-31 16:55:50

深入探究Swift数组背后的协议、方法、拓展

Swift中的集合最近翻译完了《Advanced Swift》中文版的“集合”章节。书的质量非常高,讲解非常细致。但不可避免的导致篇幅有点长,有些前面的知识点看到后面无法串联起来。同时由于偏重于讲解,所以个人感觉总结还不够,比如我们可以考虑这几个问题:数组类型(_ArrayType)、集合(Collection)、序列(Sequence)、生成器(Generator)、元素(Element)、下标

2015-12-15 20:20:37

Advanced Swift中文版

《Advance Swift》是由objc.io出版的一本深入介绍Swift特性的书。目前,《Advance Swift》还没有完成,作者仅放出了预览版(2015.10.15),并且声明会在2015年底前写完。预览版和最终版有一些区别,我会先根据预览版翻译,等最终版放出后再及时更新。如果你发现文章有错别字、语义不通顺、翻译不当等问题,请及时留言或私信我,我们共同打造一个高质量的Swift专题。每篇

2015-12-13 14:21:29

KT学算法(四)——找数组中出现超过一半的数字的优雅解和拓展

问题描述数组中有一个数字出现次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度一半,因此输出2问题分析首先想到的是,可以维护一个数据结构用来存储每个数字对应的出现次数。没遇到一个新的数字就去找这个数字是否出现过,如果出现过就加1.这种思路最简单,但是时间复杂度是O(n^2)。稍做优化,可以把数组排序,然

2015-11-28 22:05:38

UIView生命周期详解

序言本文将简要讨论一下几个问题:loadView、viewDidLoad、viewDidAppear、initWithNibName、awakeFromNib等经常出现在UIViewController中的方法介绍。这些方法分别用来作哪些工作,换言之,创建自定义的View时代码放到以上哪个方法中。一个UIView的生命周期是怎样的。以上几个方法的调用顺序如何。通过IB和代码加载视图,有什么区

2015-11-27 13:40:10

UIView的contentMode属性总结

UIView的contentMode属性最初知道这个属性还是以前面试的时候,面试官看到我app的一个图片有些变形,于是考了我这个问题。确实之前没有仔细思考过,一堆枚举值看上去也挺头疼,这次把它总结一下。我们知道,定义的UIView的frame大小,和它实际需要显示的内容的大小并不总是一直的。这个问题在使用UIImageView的时候格外容易发生。很有可能图片的真实大小、长宽比例和定义的frame不

2015-11-24 00:15:04

一个数字的魔法——破解Mac上198元的Paw

背景和目的在某位大神的博客里看到了Mac一款非常好用的App,叫Paw。Paw可以在Mac上模拟各种HTTP请求,可视化的管理HTTP Header、Parameters、Cookies等,还有一点非常出乎意料的功能是通过下载插件可以自动生成Swfit、OC、JS等多种语言的代码。然而Paw巨贵(198软妹币),而且破解版不好搜。于是寻思着自己动手解决需求,于是倒霉的Paw成了实验对象。先从这里下载

2015-11-22 21:53:51

genstrings命令与字符串本地化

之前实习的时候大概接触过字符串本地化。但是不太知道具体原理,只知道如何去使用。看完genstrings之后好像明白是怎么回事了。字符串本地化的使用如果有一个按钮,上面的文字在中文系统上显示为“点击”,在英文系统上显示为“Click”,我们可以这么做:button.text=NSLocalizedString(@"click",nil);这里的click其实相当于字典的key,然后我们维护两套字

2015-11-19 21:21:11

轻量化ViewController的几个小技巧

轻量化ViewControllerMVC最令人头疼的问题可能就是随着项目愈发复杂,ViewController的代码也会变得越来越冗长。阅读了objc的《Lighter View Controllers》和《Clean Table View Code》这两篇文章之后,总结了一些常用的轻量化ViewController的小技巧。分离业务重点既然要简化ViewController中的代码,那么在不改变原

2015-10-11 22:47:10

KT学算法(三)——最长回文子串与Manacher算法

题目来源: https://leetcode.com/problems/longest-palindromic-substring/解题思路:方法一:暴力查找:由于找到字符串的所有字串的时间复杂度为O(n^2),判断一个字符串是否为回文串需要遍历,时间复杂度为O(n),所以这个算法的时间复杂度为O(n^3)方法二:对于任意一个长度为n的字符串,总是存在最长的回文字串,对于这个回文字串而言,它的

2015-10-03 11:45:46

Swift入门(十二)——利用Extension添加逆序输出字符串方法

Swift好像没有自带逆序输出字符串的方法,于是决定通过拓展(Extension)给String类添加一个逆序输出字符串的reverse方法。首先新建一个Swift文件,命名规则不太清楚,于是暂且模仿OC叫做String+Operation吧,然后实现我们需要拓展的方法。下面先贴上代码,然后解释一下这段代码。//String+Operation.swifftimport Foundation//逆

2015-08-30 23:58:53

Swift入门(十一)——类型转换与is、as操作

三种操作:is、as?和as!Swift是强类型语言,但也允许开发者通过is、as?和as!这三种操作来对类型进行判断和强制转换。其中is用作类型判断,而as?和as!则分别是类型转换的可选形式和强制形式。在这里强调一下,swift中比较常用的向下转换(downcast)是没有as操作符的。为了方便后面的解释,这里假设定义了三个类,Fruit、Apple和Orange,其中Apple和Orange都

2015-08-29 00:45:02

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!