09 2016 档案
摘要:概述 从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行。在WWDC16上Apple公布了Swift3.0,从中可以看出Apple对Swift的重视,以及S
阅读全文
摘要:概述 上一篇文章《iOS开发系列--Swift语言》中对Swift的语法特点以及它和C、ObjC等其他语言的用法区别进行了介绍。当然,这只是Swift的入门基础,但是仅仅了解这些对于使用Swift进行iOS开发还是不够的。在这篇文章中将继续介绍一些Swift开发中一些不常关注但是又必备的知识点,以便
阅读全文
摘要:概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言、ObjC的特性,且克服了C语言的兼容性问题。Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在其中你可以看到C#、Java、Javascript、Python等多种语言的影子。同时在2015年的
阅读全文
摘要:Cocoa 中的 KVO 提供了一个完善的属性监听与通知机制。但它的运行还是依赖于 Objective-C Runtime,在 Swift 中使用的时候就不如在 Objective-C 中那么自然。于是强大的开源社区贡献了一个叫做 ObservableSwift 的第三方库。它提供了与 KVO 差不
阅读全文
摘要:猴子原创,欢迎转载。转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51917539 今天给别人讲个Observable的实现和使用场景,结合Observable-Swift gith
阅读全文
摘要:注:本文较早撰写,随着 JSPatch 的改进,有些内容已与最新代码对不上,建议转看重新整理后的JSPatch实现原理详解。 JSPatch以小巧的体积做到了让JS调用/替换任意OC方法,让iOS APP具备热更新的能力,在实现 JSPatch 过程中遇到过很多困难也踩过很多坑,有些还是挺值得分享的
阅读全文
摘要:致歉声明: Peter在开发公众号功能时触发了一个bug,导致群发错误。对此我们深表歉意,并果断开除了Peter。以下交回给正文时间: iOS 事件处理机制与图像渲染过程 iOS RunLoop都干了什么 iOS 为什么必须在主线程中操作UI 事件响应 CALayer CADisplayLink 和
阅读全文
摘要:书籍: ios核心动画高级技巧 (https://zsisme.gitbooks.io/ios-/content/index.html) 博客: https://objccn.io/issues/ http://blog.ibireme.com/
阅读全文
摘要:这篇文章将专注于实用技巧,设计模式,以及对于写出线程安全类和使用 GCD 来说所特别需要注意的一些反面模式。 线程安全 Apple 的框架 首先让我们来看看 Apple 的框架。一般来说除非特别声明,大多数的类默认都不是线程安全的。对于其中的一些类来说,这是很合理的,但是对于另外一些来说就很有趣了。
阅读全文
摘要:简介 简单的说run loop是事件驱动的一个大循环,如下代码所示 int main(int argc, char * argv[]) { //程序一直运行状态 while (AppIsRunning) { //睡眠状态,等待唤醒事件 id whoWakesMe = SleepForWakingUp
阅读全文
摘要:RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。 IndexRunLoop
阅读全文
摘要:这篇文章会非常详细的分析 iOS 界面构建中的各种性能问题以及对应的解决思路,同时给出一个开源的微博列表实现,通过实际的代码展示如何构建流畅的交互。 Index演示项目屏幕显示图像的原理卡顿产生的原因和解决方案CPU 资源消耗原因和解决方案GPU 资源消耗原因和解决方案AsyncDisplayKit
阅读全文
摘要:在面试中,我们经常会遇到一些原理性的问题,很常识但很难用通俗的语言解释清楚,这也是大部分业务级程序员经常失误的地方。虽然写了多年代码,但是核心思想不清,导致自己的后续发展受限,这是一个优秀的程序员和普通程序员的分水岭。要知其然而知其所以然!这也是整理这篇文章的初衷。文中结合了之前的一些文章,条理更清
阅读全文
摘要:本文整理自《Effective Objective-C 2.0》,通过分析比较不同的同步锁的优缺点,使用GCD方法一步步找到更高效的同步锁。 在Objective-C中,如果有多个线程要执行同一份代码,那么这时就会出现线程安全问题。首先,我们看下什么时候线程安全问题。 线程安全 如果一段代码所在的进
阅读全文
摘要:公司项目用到一个三方开源库,里面有个bug,不能改动源码,我想来想去,只能通过runtime这个万能的手段来解决。但是runtime 并不怎么会用,怎么办,马上学习呗。说到runtime,它是Objective-c里面最核心的技术,被人们传呼的神乎其神,但是感觉有一层神秘的面纱笼罩其上,毕竟使用场景
阅读全文
摘要:前言 runtime的资料网上有很多了,部分有些晦涩难懂,我通过自己的学习方法总结一遍,主要讲一些常用的方法功能,以实用为主,我觉得用到印象才是最深刻的,并且最后两个demo也是MJExtension的实现原理,面试的时候也可以多扯点。另外runtime的知识还有很多,本文DEMO 什么是runti
阅读全文
摘要:本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机。主要内容如下: 引言 简介 与Runtime交互 Runtime术语 消息 动态方法解析 消息转发 健壮的实例变量(Non Fragile ivars
阅读全文
摘要:English For more infomation ,welcome to follow my twitter Reference:iOS 10 Adaptation Tips。 1. Demo1_You'd Better Convert HTTP to HTTPS How to deal wi
阅读全文
摘要:索引 44. 以下代码运行结果如何? 25. _objc_msgForward函数是做什么的,直接调用它将会发生什么? _objc_msgForward是 IMP 类型,用于消息转发的:当向一个对象发送一条消息,但它并没有实现的时候,_objc_msgForward会尝试做消息转发。 我们可以这样创
阅读全文
摘要:索引 风格纠错题 下面的代码输出什么? 1. 风格纠错题 修改完的代码: 修改方法有很多种,现给出一种做示例: // .h文件 // http://weibo.com/luohanchenyilong/ // https://github.com/ChenYilong // 修改完的代码,这是第一种
阅读全文
摘要:最近要对一款游戏进行多语言本地化,在网上找了一些方案,加上自己的一点点想法整理出一套方案和大家分享! 多语言在应用程序中一般有两种做法:一、程序中提供给用户自己选择的机会;二、根据当前用户当前移动设备的语言自动将我们的app切换对应语言。 第一种做法比较简单完全靠自己的发挥了,这里主要讲第二种做法,
阅读全文
摘要:1. 分别描述类别(categories)和延展(extensions)是什么?以及两者的区别?继承和类别在实现中有何区别?为什么Category只能为对象添加方法,却不能添加成员变量? 答:考虑类目比继承的优点 类别是把类的实现方法分散到不同的文件中 也可以给类扩展新方法 延展是给类添加私有方法
阅读全文
摘要:(1)老祖 万物归根,UIView和CALayer都是的老祖都是NSObjet。 1: UIView的继承结构为: UIResponder : NSObject。 可以看出UIView的直接父类为UIResponder 类, UIResponder 是gsm的呢? 官方的解释: The UIResp
阅读全文
摘要:_____________转自:BeyondVincent的博客_____________ 在开发iOS应用程序时,让程序具有良好的性能是非常关键的。这也是用户所期望的,如果你的程序运行迟钝或缓慢,会招致用户的差评。 然而由于iOS设备的局限性,有时候要想获得良好的性能,是很困难的。在开发过程中,有
阅读全文
摘要:_____________转自:BeyondVincent的博客_____________ 在开发iOS应用程序时,让程序具有良好的性能是非常关键的。这也是用户所期望的,如果你的程序运行迟钝或缓慢,会招致用户的差评。 然而由于iOS设备的局限性,有时候要想获得良好的性能,是很困难的。在开发过程中,有
阅读全文
摘要:_____________转自:BeyondVincent的博客_____________ 在开发iOS应用程序时,让程序具有良好的性能是非常关键的。这也是用户所期望的,如果你的程序运行迟钝或缓慢,会招致用户的差评。 然而由于iOS设备的局限性,有时候要想获得良好的性能,是很困难的。在开发过程中,有
阅读全文
摘要:1.KVC。 KVC是一种间接访问对象属性的机制,而不是直接通过设置器和访问器或者点语法来访问对象属性。 比如:创建一个学生对象。 Student * student = [[Student alloc] init]; [student setValue@"zhangsan"forKey@"_nam
阅读全文
摘要:ViewController的生命周期中各方法执行流程如下: init—>loadView—>viewDidLoad—>viewWillApper—>viewDidApper—>viewWillDisapper—>viewDidDisapper—>viewWillUnload->viewDidUnl
阅读全文
摘要:1. Runtime Objective-C 是面相运行时的语言(runtime oriented language),就是说它会尽可能的把编译和链接时要执行的逻辑延迟到运行时。这就给了你很大的灵活性,你可以按需要把消息重定向给合适的对象,你甚 至可以交换方法的实现,等等。 RunTime简称运行时
阅读全文
摘要:1. 反转二叉树,不用递归 1 2 3 4 5 6 7 8 9 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * Tre
阅读全文
摘要:1.如何追踪app崩溃率,如何解决线上闪退 当iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上。crash日志上有很多有用的信息,比如每个正在执行线程的完整堆栈跟踪信息和内存映像,这样就能够通过解析这些信息进而定位crash发生时的代码逻辑,从而找到App闪退的原因。通
阅读全文
摘要:问题: 4道过滤菜鸟的iOS面试题 网上已经有很多针对各种知识点的面试题,面试时有些人未必真正理解也能通过背题看上去很懂。我自己总结了4道面试题,好快速的判断这个人是否是一个合格的工程师,欢迎大家点评。 1.struct和class的区别 在面试之前你觉得所有的计算机专业的学生都应该能答的上来,事实
阅读全文
摘要:死锁一直都是在使用多线程时,需要注意的一个问题。以前对同步、异步,串行、并行只有一个模糊的概念,想想也是时候整理一下了。再看看之前的博客,已经很久没有干货了【说得好像之前有干货一样】,所以,这篇博客,我尽最大努力,也借鉴了很多其他博客中的例子,来讲解GCD死锁问题。 环境信息: Mac OS X 1
阅读全文