• 如何快速的开发一个完整的iOS直播app(搭建Web服务器)

    Posted by : lon.y@qq.com on 2017年7月4日

    前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 在直播中,创建房间,获取房间,都需要服务器,因此需要搭建Web服务器 Web服务器 能处理HTTP请求的服务器都可以叫Web服务器 Node.js介绍 Node.js什么时候出现,2009年,Ryan Dahl(瑞恩·达尔)在GitHub上发布了最初版本的部分Node.js包,随后几个月里,有人开始使用Node.js开发应用 什么是Node.js,

    阅读全文...

  • 如何快速的开发一个完整的iOS直播app(搭建Socket即时通讯服务器)

    Posted by : lon.y@qq.com on 2017年7月4日

    前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 在直播中,聊天和发礼物,需要用到及时通讯技术,市面上的App大多数采用的都是第三方SDK,融云,环信等,但是本例子采用websocket搭建及时通讯服务器。 即时通讯 即时通讯(Instant messaging,简称IM)是一个终端服务,允许两人或多人使用网路即时的传递文字讯息、档案、语音与视频交流 即时通讯技术原理(了解Socket) Sock

    阅读全文...

  • iOS即时通讯,从入门到“放弃”?

    Posted by : lon.y@qq.com on 2017年7月4日

    前言 本文会用实例的方式,将iOS各种IM的方案都简单的实现一遍。并且提供一些选型、实现细节以及优化的建议。 注:文中的所有的代码示例,在github中都有demo: iOS即时通讯,从入门到“放弃”?(demo) 可以打开项目先预览效果,对照着进行阅读。 言归正传,首先我们来总结一下我们去实现IM的方式 第一种方式,使用第三方IM服务 对于短平快的公司,完全可以采用第三方SDK来实现。国内IM的第三方服务商有很多,类似云信、环信、融云、LeanCloud

    阅读全文...

  • 听说你想撤回信息?

    Posted by : lon.y@qq.com on 2017年7月4日

    趁着元旦假期,花了一天的时间了解了一下 iOS 和 Mac App 的逆向技术。第一次涉足逆向工程,原本只是打算了解一下逆向的知识,然后发现原来还可以利用逆向做点有趣的事,于是在完成之后记录一下下~ 实践结果 通过这次逆向,最终我实现了 iOS 端微信消息的防撤回 和 运动步数的修改 以及 Mac 端微信消息的防撤回 和 迅雷的免登陆免会员使用离线下载 功能 。 当然,软件的权利应当受到保护,逆向的技术亦不应被非法利用。因此本文并非为了破解任何的软件,只是

    阅读全文...

  • ReactiveCocoa 中 RACCommand底层实现分析

    Posted by : lon.y@qq.com on 2017年7月4日

      前言 在ReactiveCocoa 过程中,除去RACSignal和RACSubject这些信号类以外,有些时候我们可能还需要封装一些固定的操作集合。这些操作集合都是固定的,每次只要一触发就会执行事先定义好的一个过程。在iOS开发过程中,按钮的点击事件就可能有这种需求。那么RACCommand就可以实现这种需求。 当然除了封装一个操作集合以外,RACCommand还能集中处理错误等等功能。今天就来从底层来看看RACCommand是如何实现的。 目录 1

    阅读全文...

  • Lua 与 ObjC 的交互

    Posted by : lon.y@qq.com on 2017年7月4日

    1. 写在前面 很多时候我们都需要借助一些脚本语言来为我们实现一些动态的配置,那么就会涉及到如何让脚本语言跟原生语言交互的问题。平时在网上看得比较多的是使用JS(JavaScript)与iOS原生代码ObjC交互的文章。因为JS的解析器是iOS内部提供的(可以使用UIWebView或者JavaScriptCore.framework实现),所以使用JS来交互会感觉比较方便。 但是在这里,我想跟大家分享另外一种脚本语言的交互方式,就是使用Lua与原生的Obj

    阅读全文...

  • iOS进阶之页面性能优化

    Posted by : lon.y@qq.com on 2017年7月4日

    前言 在软件开发领域里经常能听到这样一句话,“过早的优化是万恶之源”,不要过早优化或者过度优化。我认为在编码过程中时刻注意性能影响是有必要的,但凡事都有个度,不能为了性能耽误了开发进度。在时间紧急的情况下我们往往采用“quick and dirty”的方案来快速出成果,后面再迭代优化,即所谓的敏捷开发。与之相对应的是传统软件开发中的瀑布流开发流程。 卡顿产生的原因 在 iOS 系统中,图像内容展示到屏幕的过程需要 CPU 和 GPU 共同参与。CPU 负责

    阅读全文...

  • 细聊 Cocoapods 与 Xcode 工程配置

    Posted by : lon.y@qq.com on 2017年7月4日

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

    阅读全文...

  • 放肆的使用 UIBezierPath 和 CAShapeLayer 画各种图形

    Posted by : lon.y@qq.com on 2017年7月4日

    CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你。 杂谈 在 CAShapeLayer 中,也可以像 CALayer 一样指定它的 frame 来画,就像这样: let layer = CAShapeLayer() layer.frame = CGRectMake(110, 100, 150, 100) layer.backgroundColor = UIColor

    阅读全文...

  • 如何用 Xcode8 解决多线程问题

    Posted by : lon.y@qq.com on 2017年7月4日

    Xcode 8诞生有段时日了,不知道大家对其中的新Feature是否都学习过一遍了,今天给大家介绍下Xcode 8中一个很实用的特性,Thread Sanitizer,用来解决平时编写代码时难以调试的多线程问题,顺道梳理下一些常见的容易混淆的多线程概念。 Thread Sanitizer 这款工具集成在Xcode 8中,主要帮助定位多线程相关的问题,还没有了解过的同学可以先查看 WWDC 2016 Session 412。官方的介绍当中它可以查出以下多线程

    阅读全文...