老谭笔记


  • 首页

  • 归档

  • 标签

  • 关于

  • 搜索
老谭笔记

从腾讯到阿里巴巴

发表于 2017-09-24 | 分类于 talk

距上一次写文章已经快一年时间了,其实我挺喜欢写作或是笔记的,这个博客也坚持经营6年有余了。人到一定的阶段精力总是会变得分散,更是相信所谓的坚持只靠意念是不够的。但我又不希望某一天这里的文章变成像是一张张泛黄的邮票,唯有我时常翻出来如数家珍,所以今天特地把其它的事情都推到了一边,准备记录一些无关于技术的感想。

阅读全文 »
老谭笔记

Swift服务端Web框架Kitura初体验

发表于 2016-11-27 | 分类于 code

Kitura是由IBM公司用Swift开发并开源的一个轻量级Web框架(https://github.com/IBM-Swift/Kitura),更新速度非常迅速,Swift3.0发布之后,Kitura便推出了1.0版本,目前最新的版本为1.2,并且Kitura也已经运用在IBM的PaaS平台BlueMix环境中,可谓Kitura让Swift在Web框架领域成为一种新鲜的生产力工具.

之前一直只闻其声,但从来没有实际使用过,今天在自己的服务器和本地都小试了一下,部署确实非常方便,大致记录一下这个过程.

阅读全文 »
老谭笔记

Method Swizzling的各种姿势

发表于 2016-07-24 | 分类于 code

因为Objective-C的runtime机制, Method Swizzling这个黑魔法解决了我们实际开发中诸多常规手段所无法解决的问题, 比如代码的插桩,Hook,Patch等等. 我们首先看看常规的Method Swizzling是怎样用的, NSHipster有一篇介绍基本用法的文章Method Swizzling, 我们就先以这篇文章中的示例开始说起吧:

阅读全文 »
老谭笔记

使用NSProxy和NSObject设计代理类的差异

发表于 2016-07-02 | 分类于 code

经常发现在一些需要使用消息转发而创建代理类时, 不同的程序员都有着不同的使用方法, 有些采用继承于NSObject, 而有一些采用继承自NSProxy. 二者都是Foundation框架中的基类, 并且都实现了<NSObject>这个接口, 从命名和文档中看NSProxy天生就是用来干这个事情的. 但即便如此, 它们却都定义了相同的消息转发的接口, 那我们在使用二者来完成这个工作时有什么差异呢.

阅读全文 »
老谭笔记

为对象添加一个释放时触发的block

发表于 2016-06-26 | 分类于 pieces

有时我们需要在一个对象生命周期结束的时候触发一个操作,希望当该对象dealloc的时候调用一个外部指定的block,但又不希望直接hook dealloc方法,这样侵入性太强了.下面贴一段非常简单的实现方式,通过一个category给外部暴露一个block注入的接口,内部将该block封装到一个寄生对象中(Parasite),该寄生对象在dealoc的时候触发block调用,所有的寄生对象通过runtime的AssociatedObject机制与宿主共存亡,从而达到监控宿主生命周期的目的.

注意事项

  • block触发的线程与对象释放时的线程一致,请注意后续操作的线程安全.
  • 不要在block中强引用对象,否则引用循环释放不了;
  • 不要在block中通过weak引用对象,因为此时会返回nil;
    (根据WWDC2011,Session322对对象释放时间的描述,associated objects清除在对象生命周期中很晚才执行,通过被NSObject -dealloc方法调用的object_dispose()函数完成);
阅读全文 »
老谭笔记

iOS实时卡顿监控

发表于 2015-11-21 | 分类于 code

在移动设备上开发软件,性能一直是我们最为关心的话题之一,我们作为程序员除了需要努力提高代码质量之外,及时发现和监控软件中那些造成性能低下的”罪魁祸首”也是我们神圣的职责.

阅读全文 »
老谭笔记

Protocol Buffer搭建及示例

发表于 2015-09-01 | 分类于 code

Protocol Buffer(简称Protobuf或PB)是由Google推出的一种数据交换格式,与传统的XML和JSON不同的是,它是一种二进制格式,免去了文本格式转换的各种困扰,并且转换效率也是非常快,由于它的跨平台、跨编程语言的特点,让它越来越普及,尤其是网络数据交换方面日趋成为一种主流.

阅读全文 »
老谭笔记

将多说评论导入到Disqus

发表于 2015-07-25 | 分类于 talk

多说也算是一款非常成功的产品,想当年社交化评论系统在国内刚刚兴起的时候,友言、灯鹭、畅言和多说厮杀在各个新闻或博客的评论区,好是一番繁荣的景象,后来多说凭借稳定的服务,多样化的插件,坐稳这块小众市场的第一把交椅,让我们一度认为这就是中国版的Disqus。

阅读全文 »
老谭笔记

Widget在Dashboard之外的延续

发表于 2015-07-18 | 分类于 project

Widget是OSX操作系统中比较古老的一个元素,虽然在目前最新版本的OSX仍然得以保留,但不难发现Apple已经渐渐将它遗忘在一个角落,似乎给它判死刑只是一个迟早的问题。即便如此,在Dashboard中提供的那几个Widget仍然给我们使用Mac提供了很多便利。

阅读全文 »
老谭笔记

解决NSData中包含非法UTF-8编码

发表于 2015-06-08 | 分类于 code

我们开发中常会遇上将NSData转换为NSString,或通过NSJSONSerialization解析JSON的场景,一旦NSData中包含非法的UTF-8编码,那么结果将是返回nil,但这样的结果并不符合我们预期,因为可能这其中仅仅只是一个编码错误,我们更希望将错误编码丢弃或替换为错误字符.
在Google上找了一圈,有人也实现了这样的方法,但个人觉得写得不够严谨,容错性也不太好,索性自己写一个吧,严格按照RFC3629的标准.

阅读全文 »
12…16
TanHao

TanHao

程序的世界让我着迷...

152 日志
5 分类
87 标签
  • 威言威语
  • 路路库
  • FourFire
  • MacCocoa
  • CocoaChina
© 2011 - 2017 TanHao 蜀ICP备12004580号
由 Hexo 强力驱动
主题 - NexT.Pisces