iOS Crash文件的解析

相关 Apple 官方文档

iOS Crash文件的解析需要四个文件(其实三个也够):

  • bilibili.crash/bilibili.ips - 从崩溃的手机、itunes connect或者第三方日志系统获得
  • bilibili.dSYM - 从 xcarchive 文件里获得
  • symbolicatecrash 在 xcode 里,不同版本所在位置也不一样
……

阅读全文

用 Python 写脚本发送工作周报

事情的起因是这样的,每周都要发送工作周报,标题是需要的固定的格式(方便规则收信),比如 【工作周报】 xxx 11.20-11.24,发送和抄送也是给固定的人,企业邮箱还没有模板,所以每次发邮件都要复制粘贴标题、发送人和抄送人,只有内容是手写,便萌发了用脚本发送邮件的想法。

……

阅读全文

weak 弱引用的实现方式

weak 修饰的变量,不会增加所引用对象的引用计数,且会在该对象析构后自动将指向置为nil。其本质是初始化和赋值操作会被编译器改写为 objc_initWeak 或者 objc_storeWeak 函数调用。objc_initWeak 的逻辑只是比 objc_storeWeak 多了所赋值对象的判空,接下来会直接调用 storeWeak(id *location, objc_object *newObj) 函数。

……

阅读全文

@synchronized 的实现方式

@synchronized 可以保证多线程不会同时执行一段代码,做用类似于锁,但比直接使用锁更加方便直观,那么它究竟是如何实现的呢?

……

阅读全文

Objc 中 Block 的实现原理

Objc 中的 Block 其实是一个对象,之前也说过 Objc 中对象的结构

来看下 Block 的实现,新建 TooT.m 文件写一个 func_TooT 函数:

……

阅读全文

AFNetworking 源码阅读

版本:AFNetworking 3.1.0

AFNetworking 主要的几个类或协议:

  • AFURLSessionManager
  • AFHTTPSessionManager
  • AFNetworkReachabilityManager
  • AFSecurityPolicy
  • <AFURLRequestSerialization>
  • <AFURLResponseSerialization>
……

阅读全文

iOS 中集合如何弱引用对象

1. 使用 NSValue

NSValue 可以弱引用保存一个对象,我们可以使用这种方法间接的引用。

1
2
NSValue *value = [NSValue valueWithNonretainedObject:@selector(class)];
[array addObject:value];
……

阅读全文

不要滥用懒加载

写代码是一种习惯的养成,一种生活的态度。

以前学 iOS 开发的时候,喜欢在 ViewController 和 Cell 里初始化视图,还有数据模型数组的时候,是用的懒加载(Lazy-Load)。为什么这么喜欢用懒加载来实例化一个属性呢?

  1. 觉得懒加载可以延迟加载,需要的时候才去加载数据;
  2. 数组和字典等集合类型还可以防止为初始化或者使用中被置为 nil
  3. 类的属性多了这么写看着更舒服、清晰 。。。
……

阅读全文

Swift 语法初窥

References: The Swift Programming Language

某程序员对书法十分感兴趣,退休后决定在这方面有所建树。于是花重金购买了上等的文房四宝。一日,饭后突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下一行字:hello world

……

阅读全文

科学上网:用 VPS 搭建 Shadowsocks 服务器

假设我们已经有一个 VPS,并且可以 ssh 登陆上去。

安装 shadowsocks

Debian/Ubuntu:

apt-get install python-pip
pip install shadowsocks 

如果第一条命令执行失败的话 : E: Unable to locate package python-pip,就用官方给出了一个安装脚本进行安装:

wget https://bootstrap.pypa.io/get-pip.py python get-pip.py
……

阅读全文