iOS高级开发
文章平均质量分 85
Thinker361
引领技术巅峰,黑客无所不能。年轻很值钱,不珍惜就不值钱。
展开
-
iOS开发之深入理解GCD
本文翻译自 http://www.raywenderlich.com/60749/grand-central-dispatch-in-depth-part-1原作者:Derek Selander译者:@nixzhuGithub: https://github.com/nixzhu/dev-blog 虽然 GCD 已经出现过一段时间了,但不是每个人都明了其主要原创 2016-01-21 09:27:17 · 1276 阅读 · 0 评论 -
Square对iOS App架构的新尝试---Ziggurat
今年六月,我做了一场关于避免臃肿的ViewController的演讲,用Swift讲解了一种采用“单向数据流”的架构模式。当时并没有发布相关的博客,甚至没有给这个架构起个名字。现在两者都有了。首先介绍一下Ziggurat:它是一种通过不可变的视图模型和单向数据流来实现的分层的、易测试的架构模式。这个架构的名字Ziggurat是根据阶梯状的金字塔得来的。像金字塔的阶梯一样,数据以翻译 2016-02-28 21:47:03 · 550 阅读 · 0 评论 -
iOS 基于 MVC 的项目重构总结
关于MVC的争论关于MVC的争论已经有很多,对此我的观点是:对于iOS开发中的绝大部分场景来说,MVC本身是没有问题的,你认为的MVC的问题,一定是你自己理解的问题(资深架构师请自动忽略本文).行文过程中查阅了互联网上的大量文档,其中水平良莠不齐(最常见的就是MVC改个名就当MVVM的),当然也有许多非常有价值的参考资料,在文末会逐一列举,以供参考.iOS中的MVC和MVPCo原创 2016-04-19 10:53:26 · 1820 阅读 · 0 评论 -
关于iOS多线程,你看我就够了
在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项。当然也会给出几种多线程的案例,在实际使用中感受它们的区别。还有一点需要说明的是,这篇文章将会使用 Swift 和 Objective-c 两种语言讲解,双语幼儿园。OK,let't begin!概述这篇文章中,我不会说多线程是什么、线程和进程的区别、多线程有什么用,当然我也不会说什么是串行、什么翻译 2016-04-19 10:57:25 · 2181 阅读 · 0 评论 -
一个简单登陆示例的MVC和MVP实现
登录示例:MVC自上篇《iOS基于MVC的项目重构》总结之后,我又思考了下面这个问题:在UIKit自身的设计中UIViewController是被当做C还是V呢?例如我们点击View上某个Button时,可能会使用调用self.navigationController的pushViewController:animated:方法来跳转到一个新的界面。在这个场景中,点击事件通原创 2016-04-19 15:02:44 · 1392 阅读 · 0 评论 -
Objective-C Autorelease Pool 的实现原理
内存管理一直是学习 Objective-C 的重点和难点之一,尽管现在已经是 ARC 时代了,但是了解 Objective-C 的内存管理机制仍然是十分必要的。其中,弄清楚 autorelease 的原理更是重中之重,只有理解了 autorelease 的原理,我们才算是真正了解了 Objective-C 的内存管理机制。注:本文使用的 runtime 源码是当前的最新版本 objc4-646原创 2016-08-12 22:25:57 · 418 阅读 · 0 评论 -
iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构
在 iOS 中使用 MVC 架构感觉很奇怪? 迁移到MVVM架构又怀有疑虑?听说过 VIPER 又不确定是否真的值得切换?相信你会找到以上问题的答案,如果没找到请在评论中指出。你将要整理出你在 iOS 环境下所有关于架构模式的知识。我们将带领大家简要的回顾一些流行的架构,并且在理论和实践上对它们进行比较,通过一些小的例子深化你的认知。如果对文中提到的一些关键词有兴趣,可以点击连接去原创 2016-12-08 09:25:06 · 737 阅读 · 0 评论 -
不要用子类!Swift的核心是面向协议
作者:ray1689718 授权本站转载。本篇文章翻译自:IF YOU'RE SUBCLASSING, YOU'RE DOING IT WRONG.原作者:Hector Matos原发表日期:2015-07-13Swift的核心我们可以通过等式的传递性来理解swift:Swift的核心是面向协议的编程。面向原创 2017-03-06 16:02:40 · 792 阅读 · 0 评论 -
iOS 并发编程之 Operation Queues
现如今移动设备也早已经进入了多核心 CPU 时代,并且随着时间的推移,CPU 的核心数只会增加不会减少。而作为软件开发者,我们需要做的就是尽可能地提高应用的并发性,来充分利用这些多核心 CPU 的性能。在 iOS 开发中,我们主要可以通过 Operation Queues、Dispatch Queues 和 Dispatch Sources 来提高应用的并发性。本文将主要介绍 Operatio原创 2017-03-11 18:11:44 · 363 阅读 · 0 评论 -
Metal入门(使用Metal画一个三角形)
Metal 入门原创 2017-07-03 19:48:29 · 2343 阅读 · 0 评论 -
Metal学习
学习使用苹果GPU加速3D绘图的新API:Metal Metal和OpenGL ES相似,它也是一个底层API,负责和3D绘图硬件交互。它们之间的不同在于,Metal不是跨平台的, Metal 是用 Objective-C 编 写的,基于 Foundation,使用 GCD 在 CPU 和 GPU 之间保持同步。与之相反的,它设计的在苹果硬件上运行得极其高效,与OpenGL ES相比,它提供了更快原创 2017-07-13 20:04:27 · 1367 阅读 · 0 评论 -
通过ViewController的关键流程来理解流程建模
在最近解决某个问题的时候,发现在ViewDidDisappear中去获取self.navigationController为空。猛然间意识到,原来在VC的生命周期中存在一些细节问题需要注意。而且,最近一段时间,对基于流程(生命周期是特殊的流程)建模的编程思想也开始有些反思。所以就总结了一下VC生命周期的一些问题。先说点比较抽象的东西,关于流程建模的。对于同一个对象而言,往往在不同的业务场景原创 2016-02-26 18:01:54 · 540 阅读 · 0 评论 -
起底多线程同步锁(iOS)
iOS/MacOS为多线程、共享内存(变量)提供了多种的同步解决方案(即同步锁),对于这些方案的比较,大都讨论了锁的用法以及锁操作的开销,然后就开销表现排个序。春哥以为,最优方案的选用还是看应用场景,高频接口PK低频接口、有限冲突PK激烈竞争、代码片段耗时的长短,以上都是正确选用的重要依据,不同方案在其适用范围表现各有不同。这些方案当中,除了熟悉的iOS/MacOS系统自有的同步锁,另外还有两个自原创 2016-02-26 17:54:25 · 651 阅读 · 0 评论 -
iOS闭包循环引用精讲
前言本篇文章精讲iOS开发中使用Block时一定要注意内存管理问题,很容易造成循环引用。本篇文章的目标是帮助大家快速掌握使用block的技巧。我相信大家都觉得使用block给开发带来了多大的便利,但是有很多开发者对block内存管理掌握得不够好,导致经常出现循环引用的问题。对于新手来说,出现循环引用时,是很难去查找的,因此通过Leaks不一定能检测出来,更重要的还是要靠自己的分原创 2016-02-26 17:46:09 · 748 阅读 · 0 评论 -
iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
随着移动互联网的发展,如今的手机早已不是打电话、发短信那么简单了,播放音乐、视频、录音、拍照等都是很常用的功能。在iOS中对于多媒体的支持是非常强大的,无论是音视频播放、录制,还是对麦克风、摄像头的操作都提供了多套API。在今天的文章中将会对这些内容进行一一介绍:音频音效音乐音频会话录音音频队列服务视频MPMoviePlayerControllerMPMoviePl原创 2016-02-18 14:42:21 · 1044 阅读 · 0 评论 -
深入浅出--iOS的TCP/IP协议族剖析&&Socket
简介该篇文章主要回顾--TCP/IP协议族中的TCP/UDP、HTTP;还有Socket。(--该文很干,酝酿了许久!你能耐心看完吗?)我在这个文章中,列举了常见的TCP/IP族中的协议,今天主角是--传输层协议。传输层(Transport Layer)是OSI(七层模型)中最重要、最关键的一层,它负责总体的数据传输和数据控制的一层,传输层提供端到端(应用会在网卡注册一原创 2016-03-17 09:22:36 · 1003 阅读 · 2 评论 -
设计模式六大原则(1):单一职责原则
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T原创 2016-03-08 15:02:39 · 428 阅读 · 0 评论 -
设计模式六大原则(2):里氏替换原则
肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子原创 2016-03-08 15:04:01 · 393 阅读 · 0 评论 -
Runtime那些事儿(消息机制)
本文是投稿文章,作者:HenryCheng一、关于runtime之前在项目中有遇到过用runtime解决改变全局字体的问题,所以再一次感受到了runtime黑魔法的强大,趁现在有机会分享一下对runtime的一些理解。在对象调用方法是Objective-C中经常使用的功能,也就是消息的传递,而Objective-C是C的超集,所以和C不同的是,Objective-C使用的是动态绑定翻译 2016-03-08 15:30:05 · 481 阅读 · 0 评论 -
iOS 视图封装及适配
iOS 视图封装:当同一个视图被多个页面加载,把该视图里需要用到的所有子视图当做该视图的属性,在实现方法里面,把在多个页面里要用到该视图里的公共部分添加到该视图上,该视图作为基视图抽离出来而被其他视图继承。最常用的就是TitleView 和 BottomBarView. 举例说明, 当在A页面的一个TitleView上面显示一款产品的Logo,名字,改名图标,产品详细信息按键等控件时,在B原创 2015-07-30 10:31:06 · 1598 阅读 · 0 评论 -
Cocoapods 安装
一, MAC 安装Ruby环境1. 安装RVM控制台命令: 查看版本是否正确安装,输入如下命令:2. 用RVM安装Ruby环境 设置成默认版本查看ruby版本,检查是否安装正确,输入如下命令。二,安装CocoaPods1> 通过淘宝的镜像来访问cocoapods天朝,由于cocoap原创 2015-08-27 15:15:36 · 986 阅读 · 0 评论 -
iOS 开发证书相关问题
一般来说,iOS App 在开发和发布的过程中都需要用到相关证书,对于老手来说,很简单;但对于新手来说,总是感觉有点棘手,在配置的过程中会出现各种各样的小问题,从而导致证书配置失败。现在我就开发过程中出现的一些问题作简要的解析。首先,iOS App 开发和发布都需要配置相关的证书文件。先以开发过程中需要的相关文件做简单的介绍。开发过程中需要用到三个文件:开发私钥,开发证书(公钥),描述性文件。开发原创 2015-10-21 10:06:45 · 1122 阅读 · 0 评论 -
iOS 的 XMPPFramework 简介
XMPPFramework是一个OS X/iOS平台的开源项目,使用Objective-C实现了XMPP协议(RFC-3920),同时还提供了用于读写XML的工具,大大简化了基于XMPP的通信应用的开发。1. 登录和好友上下线1.1XMPP中常用对象们XMPPStream:xmpp基础服务类XMPPRoster:好友列表类XMPPRoster原创 2016-02-25 15:59:18 · 564 阅读 · 0 评论 -
漫谈GCD
多线程是程序开发中非常基础的一个概念,大家在开发过程中应该或多或少用过相关的东西。同时这恰恰又是一个比较棘手的概念,一切跟多线程挂钩的东西都会变得复杂。如果使用过程中对多线程不够熟悉,很可能会埋下一些难以预料的坑。iOS中的多线程技术主要有NSThread, GCD和NSOperation。他们的封装层次依次递增,其中:NSThread封装性最差,最偏向于底层,主要基于th原创 2016-02-26 17:43:37 · 944 阅读 · 0 评论 -
React-Native集成到已有项目过程及问题处理
先看搞清楚项目目录情况: 第一层目录:项目根目录: iOS-2028-master/ 第二层目录:原生项目根目录:iOS-2048-master/NumberTileGame/另外假设已经全局安装好node、npm、cocoapods、react-native cli等工具,这些工具没有安装的,请先自行Google安装。Packages Installation进入项目根目录 iOS原创 2017-07-13 20:45:10 · 2558 阅读 · 0 评论