240 发简信
IP属地:广东
  • iOS Zombie Objects(僵尸对象)原理探索

    iOS Zombie Objects 原理探索 Zombie Object 有什么用 僵尸对象一种用来检测内存错误(EXC_BAD_ACCESS)的对象,它可以捕获任何对尝试...

  • @梦随兴飞 只允许特定域名的请求?

    iOS 中对 HTTPS 证书链的验证

    这篇文章是我一边学习证书验证一边记录的内容,稍微整理了下,共扯了三部分内容: HTTPS 简要原理; 数字证书的内容、生成及验证; iOS 上对证书链的验证。 HTTPS 概...

  • 120
    在树莓派上部署ATC网络模拟工具(Augmented Traffic Control)

    一、前言 作为移动开发者的我们,为了良好的用户体验,经常需要模拟手机应用在比较差的网络环境下的表现,模拟网络环境的方式有很多,比如使用Charles,或者在手机的开发者模式下...

  • 真想认识下你们的美女 超哥

    iOS对HTTPS证书链的验证

    本文由我们团队的美女 超哥 分享 HTTPS从最终的数据解析的角度,与HTTP相同。HTTPS将HTTP协议数据包放到SSL/TSL层加密后,在TCP/IP层组成IP数据报去...

  • 120
    查找 iOS 应用的内存问题

    本文列举的不是查找 iOS 应用内存问题的必要流程,只是讲述笔者在干这档子事儿的时候,可能会用到的手段而已。😊 Clang Static Analyzer 在应用运行起来之前...

  • 120
    iOS 中的“实时”模糊效果

    说起实时模糊,最先想到的就是 iOS 7 中的 UIToolBar 和 iOS 8 中的 UIVisualEffectView,这两玩意儿的优点很明显,那就是快。美中不足的是...

  • 120
    探究自动引用计数的实现

    ARC 即为 “automatic reference counting”,相比 MRR,主要区别在于是人为还是编译器插入与内存管理相关的语句。此文只会记录 ARC 的内存管...

  • 120
    探究自动释放池的实现

    上一篇依靠 objc-runtime 的源码学习了引用计数的原理和具体实现,但并没有解释内存管理法则第二条中的“非自己生成的对象”是如何被释放的。要想回答这个问题,必须了解 ...

  • 探究引用计数的实现

    MRR 即为 “manual retain-release”,人为地插入 retain, release 等语句进行内存管理。 内存管理基础规则 整个内存管理模型都是围绕对象...

  • 实现自己的 KVC

    本文只是按照自己思路实现了 setValue:forKey: 和 setValue:forKeyPath: 这两个方法,所以这个标题起得有点夸张了,KVC 跟容器类的交互、对...

  • @ZeroJ 你说的 ABCD 的那个例子确实不是 atomic 要管的情况,而我描述的是 setter 函数返回前在 `objcRelease(oldValue)` 处可能出现的竞态条件。你这么一说我才发现,我们讨论的分歧在于什么才是调用函数的正确结果:我理解的是 setter 返回时对于当前线程来说被正确赋值,而你说的应该是在 setter 中实现赋值则为正确?关于这个我没找到什么严格定义,当做是交换下意见罢了。 :smiley:

    iOS开发几年了,你清楚OC中的这些东西么!!!?

    前言 几年前笔者是使用Objective-C进行iOS开发, 不过在两年前Apple发布swift的时候,就开始了swift的学习, 在swift1.2发布后就正式并且一直都...

  • @ZeroJ 最后一行,结果是不正确的,少了 “不” 字。

    iOS开发几年了,你清楚OC中的这些东西么!!!?

    前言 几年前笔者是使用Objective-C进行iOS开发, 不过在两年前Apple发布swift的时候,就开始了swift的学习, 在swift1.2发布后就正式并且一直都...

  • @ZeroJ 原子性代表操作的不可分割。我认为的线程安全函数:假设单线程中调用某个函数产生的结果为正确结果,那么在多线程中被重复调用也总能产生正确的结果的函数,是线程安全的。以 objc runtime 中的 `static inline void reallySetProperty(id self, SEL _cmd, id newValue, ptrdiff_t offset, bool atomic, bool copy, bool mutableCopy)
    ` 的实现为例, 自旋锁仅保证 `oldValue = *slot; *slot = newValue;` 这一块代码的写安全,粒度较小。之后在对旧值的释放过程中仍有可能切换到到其他线程的 setter 中去,那么原来线程的 setter 返回时结果就正确了,所以我认为 setter 并非线程安全。

    iOS开发几年了,你清楚OC中的这些东西么!!!?

    前言 几年前笔者是使用Objective-C进行iOS开发, 不过在两年前Apple发布swift的时候,就开始了swift的学习, 在swift1.2发布后就正式并且一直都...

  • Atomic 只保证属性的读和写是原子的,但并不是线程安全(无论是函数还是类)。

    iOS开发几年了,你清楚OC中的这些东西么!!!?

    前言 几年前笔者是使用Objective-C进行iOS开发, 不过在两年前Apple发布swift的时候,就开始了swift的学习, 在swift1.2发布后就正式并且一直都...

个人介绍
喜欢各种体位编程。