All Posts

[译] Mirror 的工作原理

作者:Mike Ash 原文链接:How Mirror Works 原文日期:2018-09-26 尽管 Swift 重心在强调静态类型上,但它同时支持丰富的元数据类型。元数据类型允许代码在运行时检查和操作任意值。这个功能通过 Mirror API 暴露给 Swift 开发者。大家可能会感到困惑,在 Swift 这种如此强调静态类型的语言里,Mirror 这样的特性是怎么工作的?让我们一起来通过这篇文章了解一下。

iOS 设置代理(Proxy)方案总结

最近因为项目需要,需要在打开某个网址时设置 HTTP 代理。所以做了相关的技术方案调研,并总结下来。 在 WebView 设置 Proxy 的方式,就是对请求进行拦截并重新处理。还有一种全局的实现方案,使用 iOS 9 以后才有的 NetworkExtension,但是这种方案会在用户看来像是个微皮恩的 App,不友好且太重了。

把 setState 整明白

加入新团队后,团队项目使用了 React Native。刚开始接触 React Native,除了学习React Native 的使用,更要了解 React.js 这个框架,才能更好的使用。而 React 框架中,笔者一开始就感觉奇妙的,就是这个看似同步,表现却不一定是同步的 setState 方法。看了网上一些文章,结论似乎都是从某几篇博客相互借鉴的结论,但里面笔者还是觉得有一些不太明白的地方,幸亏 React.js 源码是开源的。顺着源码看下去,一些困惑的问题终于有些眉目。

Why is MetaClass in Objective-C?

这篇文章源于美团面试官问的我一个问题,为什么 Objective-C 中有 Class 和 MetaClass 这种设计?去掉是否可以?当时的我并没有深入思考过这个问题,而网上搜索的结果都是在阐述有 MetaClass 而简略的解释了原因。我认为这个问题是个很关键的问题,花了大概两周时间查阅资料,查看源码。这篇文章试图展开探讨一个问题,为什么 Objective-C 中有 MetaClass 这个设计?

再谈 Objective-C 弱引用容器的实现-关联对象实现 weak

之前写了一篇文章总结了 OC 中弱引用容器实现,在小米面试中提到其中 CFFoundation 的做法,面试官问了我一个问题,这样实现后在这些元素在被销毁后,还保留在容器中会有什么问题么?我马上意识到,这些元素会变成野指针,且之前只实现了引用计数的不变,而没有实现Weak特质,也就是没有在销毁后置nil,也没有被移除,那么容器外界再访问时就会崩溃。看来之前考虑得还是太片面,也没有做更周全的实验。 所以看了 Runtime 源码和文章后,订正弱引用容器的一些实现方法。

从一道网易面试题浅谈 Objective-C 线程安全

今天去网易面试,面试官出了一道面试题,下面代码会发生什么问题?