ios
文章平均质量分 90
麦晓宇
个人从事程序化交易、ios,android开发,逆向
展开
-
不再安全的 OSSpinLock
昨天有位开发者在Github上给我提了一个issue,里面指出OSSpinLock在新版iOS中已经不能再保证安全了,并提供了几个相关资料的链接。我仔细查了一下相关资料,确认了这个让人不爽的bug。OSSpinLock的问题2015-12-14那天,swift-dev邮件列表里有人在讨论weak属性的线程安全问题,其中有几位苹果工程师透露了自旋锁的 bug,对话内容大致如下:新版iOS中,系统维护了5个不同的线程优先级/QoS: background,uti...转载 2021-08-19 09:00:56 · 240 阅读 · 0 评论 -
使用 ASDK 性能调优 - 提升 iOS 界面的渲染性能
这一系列的文章会从几个方面对ASDK在性能调优方面策略的实现进行分析,帮助读者理解 ASDK 如何做到使复杂的 UI 界面达到 60 FPS 的刷新频率的;本篇文章会从视图的渲染层面讲解 ASDK 对于渲染过程的优化并对 ASDK 进行概述。在客户端或者前端开发中,对于性能的优化,尤其是 UI,往往都不是最先考虑的问题。因为在大多数场景下,使用更加复杂的高性能代码替代可用的代码经常会导致代码的可维护性下降,所以更需要我们开发者对优化的时间点以及原因有一个比较清楚的认识,避免过度优化带来的问题...转载 2020-08-29 21:05:06 · 618 阅读 · 0 评论 -
iOS开发之AsyncSocket使用教程
用socket可以实现像QQ那样发送即时消息的功能。客户端和服务端需要建立长连接,在长连接的情况下,发送消息。客户端可以发送心跳包来检测长连接。在iOS开发中使用socket,一般都是用第三方库AsyncSocket,不得不承认这个库确实很强大。下载地址CocoaAsyncSocket。使用AsyncSocket的时候可以做一层封装,根据需求提供几个接口出来。比如:连接、断开连转载 2016-05-17 23:14:16 · 625 阅读 · 0 评论 -
Why doesn't Objective-C support private methods?
The answer is... well... simple. Simplicity and consistency, in fact.Objective-C is purely dynamic at the moment of method dispatch. In particular, every method dispatch goes through the exact sam转载 2016-06-26 23:39:46 · 579 阅读 · 0 评论 -
Main event loop
In the main event loop, an application continuously routes incoming events to objects for handling and, as a result of that handling, updates its appearance and state. An event loop is simply a run lo转载 2016-06-30 22:06:36 · 639 阅读 · 0 评论 -
Objective-C Message Forwarding
Friday Q&A 2009-03-27: Objective-C Message Forwardingby Mike Ash This article is also available in Chinese (translation by neoman).Welcome back to another exciting Friday Q&A. This week I'm转载 2016-05-16 08:36:23 · 983 阅读 · 0 评论 -
Objective-C Messaging
Friday Q&A 2009-03-20: Objective-C Messagingby Mike Ash This article is also available in Chinese (translation by neoman).Welcome back to another Friday Q&A. This week I'd like to take Josh转载 2016-05-16 08:38:44 · 459 阅读 · 0 评论 -
OSX内核加载mach-o流程分析
0x00 摘要 研究OS X安全方面的知识需要对mach-o加载的流程需要有一个比较完整的理解,断断续续一个月的时间里面,通过对源码的阅读对mach-o的加载有一个比较基本的认识,在遇到各个具体的问题是才能更好的理解和操作。 其他相关文章可以看这里,基本涵盖了从内核态到应用层的相关源码的简单分析。还有不足之处在遇到相关的问题时也会加到这一系列文章中。 1.mach转载 2016-05-15 22:15:36 · 3419 阅读 · 0 评论 -
蘑菇街 App 的组件化之路
在组件化之前,蘑菇街 App 的代码都是在一个工程里开发的,在人比较少,业务发展不是很快的时候,这样是比较合适的,能一定程度地保证开发效率。慢慢地代码量多了起来,开发人员也多了起来,业务发展也快了起来,这时单一工程开发模式就会显露出一些弊端耦合比较严重(因为没有明确的约束,「组件」间引用的现象会比较多)容易出现冲突(尤其是使用 Xib,还有就是 Xcode Project,虽说有转载 2016-07-27 11:32:36 · 879 阅读 · 0 评论 -
iOS应用架构谈 view层的组织和调用方案
前言《iOS应用架构谈 开篇》出来之后,很多人来催我赶紧出第二篇。这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分。现在好啦,第二篇出来了。当我们开始设计View层的架构时,往往是这个App还没有开始开发,或者这个App已经发过几个版本了,然后此时需要做非常彻底的重构。一般也就是这两种时机会去做V转载 2016-07-27 14:20:52 · 387 阅读 · 0 评论 -
iOS应用架构谈 网络层设计方案
前言网络层在一个App中也是一个不可缺少的部分,工程师们在网络层能够发挥的空间也比较大。另外,苹果对网络请求部分已经做了很好的封装,业界的AFNetworking也被广泛使用。其它的ASIHttpRequest,MKNetworkKit啥的其实也都还不错,但前者已经弃坑,后者也在弃坑的边缘。在实际的App开发中,Afnetworking已经成为了事实上各大App的标准配置。转载 2016-07-27 14:25:45 · 1077 阅读 · 0 评论 -
iOS应用架构谈 开篇
缘由之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验。在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会从哪些方面来说呢?当时看到这个问题正好在乘公车回家的路上,闲来无聊就答了一把。在zzz在微信朋友圈上追问了几个问题之后,我觉得有必要开个博客专门来讲讲一些个人见解。其转载 2016-07-27 14:15:49 · 406 阅读 · 0 评论 -
怎么面试架构师
其实本文想说的是:当面试一个架构师的时候,我们应该问什么问题?我觉得,问什么样的问题,体现了team leader更加看重架构师的哪些特点。我一直认为,做技术就跟练武一样,在练武的不同阶段,分招式和心法。技术也一样,在不同的阶段,也分招式和心法。另外,就我个人而言,经常忘记招式,一方面可以说十二年来,我用过的招式很多,到了现在也不记得几个。另一方面我自己也不会特意去记。事实上,十二年代码写转载 2016-07-27 15:02:21 · 575 阅读 · 0 评论 -
iOS 开发中的争议(一)
序言打算分享一些有争议的话题,并且表达一下我的看法。这是该系列的第一篇,我想讨论的是:类的成员变量应该如何定义?在 Objective-C 的语言的早期,类的私有成员变量是只能定义在 .h 的头文件里面的。像如下这样:@interface ViewController : UIViewController { @private NSInteger _va转载 2016-07-27 15:36:24 · 446 阅读 · 0 评论 -
Top 10 Core Data Tools and Libraries
Core Data is a great choice for persisting and querying data in your iOS and OSX apps. Not only can it reduce memory usage and improve performance, but it can also save you from writing a lot of unnec转载 2016-07-17 15:30:43 · 816 阅读 · 0 评论 -
[ios]iOS开源库学习-SDWebImage
世人都说阅读源代码对于功力的提升是十分显著的, 但是很多的著名开源框架源代码动辄上万行, 复杂度实在太高, 在暑假的时候我曾经试图读一些开源框架的源代码, 比如说 AFNetworking, SDWebImage, ReactiveCocoa 但是由于当时比较浮躁, 实在没法静下心来看, 而且有一些急功近利, 所以面对宝藏实在无力挖掘. 而最近, 由于时间比较充裕, 也终于能静下心来一段一段分转载 2016-07-17 16:04:04 · 449 阅读 · 0 评论 -
iOS 开发中的争议(二)
打算分享一些有争议的话题,并且表达一下我的看法。这是该系列的第二篇。在本文中,我想讨论的是:对于 UI 界面的编写工作,到底应该用 xib/storyboard 完成,还是用手写代码来完成?本着 “使用过才有发言权” 原则,我介绍一下我的经历:最早在网易开发 “ 有道云笔记 “ 的时候,我们是使用 xib 来制作界面的。三前年创业编写 “ 粉笔网 “ 的时候,我也是使用 xib 来转载 2016-07-27 16:19:38 · 694 阅读 · 0 评论 -
IOS应用架构思考一(网络层)
最近看到Casa Taloyum同学的关于IOS架构的文章,分享的概念和观点很值得一看,于是不禁心痒,也做些分享吧,我会从实际设计过程中需要思考的问题的角度着手来讲述,毕竟无论什么样的架构,什么样的设计都是要解决这些问题的。今天就先讲讲网络层的需要思考的问题吧。1.requestOperation的设计我们都知道在客户端发送请求是需要成本的,那么设计异步的请求就是首要的问题转载 2016-07-27 16:51:54 · 441 阅读 · 0 评论 -
IOS应用架构思考二(网络图片库)
移动端架构中图片库是非常重要的一环,其实图片库也可以理解为网络库的一种特殊使用模式,为了满足需要,图片库至少要满足以下特点:提供一个加载入口,通常以UIImageView的类别方法setImageWithURL:...开始支持异步网络加载图片支持内存缓存和文件缓存确保同一张图片不会被重复下载主流图片格式的解码著名的优秀关于图片加载的库有:SDWebImage转载 2016-07-27 16:55:09 · 509 阅读 · 0 评论 -
滥用单例之dispatch_once死锁
现象上周排查了一个bug,现象很简单,就是个Crash问题。但是读了一下crash Log以后,却发现堆栈报的错误信息却是第一次见到(吹牛的说,我在国内的iOS也能算第十二人了),包含以下还未符号化信息:Application Specific Information:com.xxx.yyy failed to scene-create in timeElapsed total转载 2016-07-27 16:59:34 · 5170 阅读 · 0 评论 -
代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
最近接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问,就是应该如何制作UI界面。iOS应用是非常重视用户体验的,可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关系。而随着iOS开发发展至今,可以说在UI制作上大家逐渐分化为了三种主要流派:使用代码手写UI及布局;使用单个xib文件组织viewController或者view;使用StoryBoard来通过单个转载 2016-07-27 19:14:34 · 627 阅读 · 0 评论 -
Objective-C之run loop详解
做了一年多的IOS开发,对IOS和Objective-C深层次的了解还十分有限,大多还停留在会用API的级别,这是件挺可悲的事情。想学好一门语言还是需要深层次的了解它,这样才能在使用的时候得心应手,出现各种怪异的问题时不至于不知所措。废话少说,进入今天的正题。不知道大家有没有想过这个问题,一个应用开始运行以后放在那里,如果不对它进行任何操作,这个应用就像静止了一样,不会自发的有任何动作发生转载 2016-07-27 19:53:24 · 441 阅读 · 0 评论 -
Objective-C是动态语言吗?为什么?
看到有人说Objective-C是动态语言的, 但是感觉跟其他动态语言的比如python的差别很大。 为什么Objective-C是动态语言, Objective-C有那些动态语言的特点?修改举报1 条评论 分享 • 邀请回答按投票排序按时间排序5 个回答155赞同反对,不会显示你的转载 2016-07-14 08:18:26 · 3987 阅读 · 0 评论 -
Best iOS 9 Cydia Tweaks (Cont.)
One of the biggest benefits of jailbreaking your iPhone is customization. Here are the best new iOS 9 Cydia tweaks for this month.iOS is becoming more and more customizable, thanks to Apple adding转载 2016-07-17 19:42:42 · 2338 阅读 · 0 评论 -
dumpdecrypted砸壳
dumpdecrypted 砸壳一、dumpdecrypted源码地址github地址二、确认要砸壳的iOS系统版本即iOS版本需要与SDK版本相同。注意,5.1版SDK编译出的dylib是向下兼容的,可以用于iOS5.0,6.1版SDK同理。三、提取需要的SDK版本下载旧版本的Xcode,然后把里面的SDK提取出来。Xcode.app/Contents/Develop.........原创 2016-07-22 09:23:28 · 1064 阅读 · 0 评论 -
iOS应用支持IPV6,就那点事儿
果然是苹果打个哈欠,iOS行业内就得起一次风暴呀。自从5月初Apple明文规定所有开发者在6月1号以后提交新版本需要支持IPV6-Only的网络,大家便开始热火朝天的研究如何支持IPV6,以及应用中哪些模块目前不支持IPV6。为了更好的交流,特建了一个IPV6交流群(群号:574410254),希望能否相互交流沟通问题:IPV6支持交流群.png一、IPV6-Only支持是啥?转载 2016-08-29 22:25:34 · 974 阅读 · 0 评论 -
Objective-C的陷阱与缺陷
Objective-C是一个强大而且非常有用的语言,但是同样也是有一点危险的。这次主题是受到Cay S. Horstmann的一篇有关C++陷阱的文章启发,我的同事Chris Denter推荐我来聊聊Objective-C和Cocoa中的陷阱。简介我将和Horstmann使用同样的定义:陷阱是能够编译、链接、运行,但却不会按你所预期地去执行的代码。他提供了一个例子,这段代码转载 2016-08-26 21:34:12 · 733 阅读 · 0 评论 -
ios刷机固件下载网址
威锋网威锋游戏威锋商城威智网安锋网展开威锋论坛新手教程热门游戏手机壁纸扫码党兔兔助手收藏本页威锋APPLE工具中心苹果产品信息查询IOS固件中心越狱工具中心威锋论坛交流iPhone SE 6s Plus iPhone 6s 6 Plus iPhone 6 iPhone 5S iPhone转载 2016-08-27 00:22:15 · 2525 阅读 · 0 评论 -
Xcode如何使用Instruments处理Zombie(内存僵尸)
iOS开发中经常会碰到的且很棘手的问题是内存僵尸,就是Zombie。造成这个原因是在我们使用某个对象的时候,其实这个对象已经被释放,被内存回收了。这个时候再使用就会出现错误。如图所示:产生这样的错误的时候,Xcode往往会直接调到汇编文件,如果我们的代码是成千上万行的话很难找到错误的具体位置。这个时候如果我们利用Instruments就会非常快的定位到错误的位置。下面我转载 2016-12-16 14:59:15 · 2031 阅读 · 0 评论 -
How do you implement global iPhone Exception Handling?
It seems like you are asking two questions here: how to set a top level exception handler; and how to deal with the issue of determining what the root cause is.Catching the exception can be done i转载 2016-12-16 15:05:46 · 662 阅读 · 0 评论 -
NSURLCache缓存的位置
前言对于NSURLRequest,我们都很熟悉。在创建request时,可以设置属性cachePolicy,决定从本地还是网络上获取内容。那么如果是从本地取的话,是从哪取呢?下面来简单聊一下。NSURLCaheNSURLCahe实现了response的缓存机制,将NSURLRequest和NSCachedURLResponse映射起来。默认情况下,Memory cache=转载 2017-03-03 09:52:38 · 2471 阅读 · 0 评论 -
iOS中的谓词(NSPredicate)使用
首先,我们需要知道何谓谓词,让我们看看官方的解释:The NSPredicate class is used to define logical conditions used to constrain a search either for a fetch or for in-memory filtering.NSPredicate类是用来定义逻辑条件约束的获取或内存中的过滤搜索转载 2017-03-25 10:47:04 · 673 阅读 · 0 评论 -
关于Xcode7后.dylib库不见了而变更为.tbd
Xcode7以后.dylib的库都找不到了(其实也能找到,后面会介绍),取而代之的则是与其同名的.tbd库。这是在stackoverflow搜到的一个满意答案【点击跳转】给出的解释:For those who are curious, the .tbd files are new "text-based stub libraries", that provide a much转载 2017-03-25 21:03:24 · 1393 阅读 · 0 评论 -
玩转 iOS 10 推送 —— UserNotifications Framework(上)
iOS 10 came在今年 6月14号 苹果开发者大会 WWDC 2016 之后,笔者赶紧就去 apple 的开发者网站下载了最新的 Xcode 8 beta 和 iOS 10 beta,然后在自己的手机上装了 iOS 10 beta ,狠狠地体验了一把。可以说 iOS 10 无论从界面风格,还是 Framework 都做了很多改动。最直观的感受就是界面的圆角增多了,系统动画更加多样转载 2017-04-19 10:50:31 · 816 阅读 · 0 评论 -
ios面试题汇总
一个区分度很大的面试题考察一个面试者基础咋样,基本上问一个 @property 就够了: @property 后面可以有哪些修饰符?什么情况使用 weak 关键字,相比 assign 有什么不同?怎么用 copy 关键字?这个写法会出什么问题: @property (copy) NSMutableArray *array;如何让自己的类用 copy 修饰符?如何重写带 copy 关键转载 2016-06-26 23:16:05 · 1945 阅读 · 0 评论 -
CallKit的使用介绍
CallKit的功能介绍CallKit可以帮我们的网络电话提供怎样更好的体验?锁屏时,有一个来电,现在是这样的1.jpg就是一条普通的推送信息,看起来和iMessage的一条信息没有什么区别。没有锁屏时,如下,都是需要点击后进入应用内再进行操作。2.jpgCallKit会带来怎样的改变呢,我们可以看下,锁屏时,有一个来转载 2017-05-01 17:38:49 · 5294 阅读 · 0 评论 -
关于Xcode编译性能优化的研究工作总结
近来(8月1–8月12)结合Xcode的官方文档和网上资料经验对Xcode的一些配置选项进行了编译优化的尝试研究,所谓优化主要从编译耗时及编译出的安装包大小进行优化。在研究分析过程中将手上的几个Demo项目进行了编译测试,有Swift项目也有Object-C项目。此外,对于不同配置的相应原理也做了较深入的挖掘分析。总的来说,对Xcode的Build Setting 进行配置选项的修改是最直转载 2017-05-10 20:04:05 · 2907 阅读 · 0 评论 -
OCS:史上最疯狂的iOS动态化方案
在iOS的发展历程上,涌现了很多动态化方案,有历史悠久的WaxPatch动态化方案,有远近闻名的JSPatch动态化方案。今天我们向大家介绍一款堪称“史上最疯狂”的iOS动态化方案——OCS. 初窥OCS OCS是全新设计的iOS动态化方案。我们定义了一套精确描述OC语义的字节码指令集(OCScript),开发了一套全自动编译器(OCSCompiler),实现了一个高性能的虚拟机(OC转载 2017-05-10 20:30:42 · 1289 阅读 · 0 评论 -
iOS开发之多工程联编
在iOS应用开发中,随着开发 的深入,项目的规范也越来越高,为了更加方便的管理自定义静态库与pods之间的联系,我们通常会在在当前的项目工程文件中引入静态库或者其他工程,并与CocoaPods配合使用.在说具体操作前 我们先了解一下这种开发方式的好处批注:在开发中我们经常会有一些用的比较多的技术,比如一些帮助类,一些好的技术封装等等。这样在开发新项目时,就可以把这个转载 2017-04-21 13:36:51 · 1582 阅读 · 0 评论 -
iOS 保持界面流畅的技巧
这篇文章会非常详细的分析 iOS 界面构建中的各种性能问题以及对应的解决思路,同时给出一个开源的微博列表实现,通过实际的代码展示如何构建流畅的交互。Index演示项目屏幕显示图像的原理卡顿产生的原因和解决方案CPU 资源消耗原因和解决方案GPU 资源消耗原因和解决方案AsyncDisplayKitASDK 的由来ASDK 的资料ASDK转载 2017-05-23 10:16:29 · 404 阅读 · 0 评论