James Yu


写了那么多的if else 依然未能参透其精髓。。。


Tag: iOS开发


  1. 关于duplicate symbol的思考

    iOS 开发中经常会遇到duplicate symbol这个问题,在编译链接的时候就会出现。相信有经验的开发都知道是怎么回事。那今天要讲的就是编译器在link时的一个坑! 讲个故事 最近在我们在发布SDK的时候,测试和预发,以及灰度都做完了。在正式发布的时候直接闪退了。看到这个问题直接一脸懵逼! 在SDK中,我们接入了人脸识别的SDK,在APP里面接入的时候,出现了闪退。挂在了RSA验签上,为什么同样的SDK会在正式发布的时候必闪退呢?由于涉及些公司安全东西,本篇是个阉割版,就不说解决…

    iOS开发继续阅读

  2. SDK开发经验分享

    入职以来一直负责SDK的开发工作。从第一个版本一直到现在,期间遇到了不少问题,踩过不少坑,也对接过不少集团内部SDK,对SDK开发也算有点微薄经验。本篇文章没啥干货,都是我在闲扯,平常上厕所时看看就可以扔了。。。 门面篇 SDK提供给别人使用的时候,第一印象很重要,直接影响到接入者对它的印象和心情。比如,我们经常听到周围同学接入一些SDK时候各种吐槽:包名和类前缀不一致,里面API命名怎么这么反人类,注释和方法对不上,回调怎么这么奇葩,怎么这么多参数设置等等。如果,我们真的接出现上面问题的…

    iOS开发继续阅读

  3. keychain(二)

    上一篇主要讲了keychain的基本使用,这篇主要讲keychain安全方面的一些东西。 kSecAttrAccessible 这个属性,决定了我们item在什么条件下可以获取到里面的内容,我们在添加item的时候,可以添加这个属性,来增强数据的安全性,具体的主要有以下几个: kSecAttrAccessibleWhenUnlocked kSecAttrAccessibleAfterFirstUnlock kSecAttrAccessibleAlways kSecAttrAccessibleWh…

    iOS开发继续阅读

  4. keychain(一)

    iOS keychain 主要是用来保存一些用户敏感数据。比如用户密码,token。keychain是用SQLite进行存储的。用苹果的话来说是一个专业的数据库,加密我们保存的数据,可以通过metadata(attributes)进行高效的搜索。keychain适合保存一些比较小的数据量的数据,如果要保存大的数据,可以考虑文件的形式存储在磁盘上,在keychain里面保存解密这个文件的密钥。 keychain的类型 kSecClassGenericPassword kSecClassIntern…

    iOS开发继续阅读

  5. iOS 注册进程之间的通知

    最近开发中为了方便自己测试,准备弄个简单业务错误日志统计。由于只是测试用,况且出现我认为可能错的情况几率很小。想在不改变现有代码的情况下,直接获取NSLog内容。查了些资料,知道NSLog输出的内容会写到控制台和系统日志(ASL)里面。我就想在输入到ASL的时候把特定的数据给保存下来。但是我无法知道NSLog什么时候输出内容,看到网上开源的DDLogger的源码,找到了解决的方法。原来只是需要注册下系统的通知就可以拿到输出的时机,然后通过提供的方法去操作系统设备log。 notify.h 这个头…

    iOS开发继续阅读

  6. iOS中的 NSURLProtocol

    最近做SDK开发的时候,为了给QA编写一个测试工具,方便调试和记录请求内容。但是又不想改动已经写好的SDK代码。本来想到用methodSwizzle,但是发现SDK要开放一些私有的类出来,太麻烦,也不方便最后的打包。于是网上搜了下,如何黑魔法下系统的回调函数,无意中发现了NSURLProtocol这个牛逼玩意。。。所有问题都被它给解决了。。。。 NSURLProtocol NSURLProtocol是 iOS里面的URL Loading System的一部分,但是从它的名字来看,你绝对不会…

    iOS开发继续阅读

  7. iOS中的Protocol

    最近工作中遇到一个比较迷惑的事情,在我利用runtime获取类的属性的时候,由于类实现了一个自定义协议,导致遍历出来的属性中包含了NSObject协议中的property。查来查去,只是知道和protocol有关。晚上问了下朋友(iOS大神),结果被他一句点破。发现这部分知识点遗漏了一点。 protocol类似java中的interface,主要是用来定义一套对象之间的通信规则。protocol也是我们设计时常用的一个东西,相对于直接继承的方式,protocol则偏向于组合模式。因为在设计对象的…

    iOS开发继续阅读

  8. iOS7 autolayout xib-multiplier bug

    最近在项目中遇到一个非常奇葩的bug,只要进入一个页面,然后返回,必挂。控制台打印出各种乱七八糟的一大堆约束,根本看不懂。这个问题非常隐蔽,排查时,出现几个可疑点,但是经过不断验证,发现不是引起的原因。很多以前项目中常用的方法,在这边也出了问题。有种iOS开发三观被毁的感觉。最后,只能确定一个问题就是这边约束出了问题,从xib到代码都查了一遍,无论怎么查,都发现没有错。最后,结合git,采取了非常暴力的调试方法,就是每次将xib中的布局,一个个的删除掉。看看到底是哪边出了问题。。 当发现删除某一…

    iOS开发继续阅读

  9. iOS NSNotificationCenter 使用姿势详解

    最近在做平板的过程中,发现了一些很不规范的代码。偶然修复支付bug的时候,看到其他项目代码,使用通知的地方没有移除,我以为我这个模块的支付闪退是因为他通知没有移除的缘故。而在debug和看了具体的代码的时候才发现和这里没有关系。在我印象中,曾经因为没有移除通知而遇到闪退的问题。所以让我很意外,于是写了个demo研究了下,同时来讲下NSNotificationCenter使用的正确姿势。 NSNotificationCenter 对于这个没必要多说,就是一个消息通知机制,类似广播。观察者只需要向消…

    iOS开发继续阅读

  10. iOS 数据源切换混乱问题

    问题场景 这个问题遇到是偶然的,正常来说是不会出现的。但是有时候在一些极端操作情况下,还是出现了。 现在我说明下这个场景。页面上是一个tableview,那对应的有一个dataSource,页面顶部有两个“进行中”和“已结束”切换按钮。用户通过切换这两个按钮来拉取不同的数据,但是呢,数据源是同一个。对应的网络请求是一样的,只不过是里面请求参数的status一个是1,一个是2。看下这个页面的网络数据回调处理方式: if(!self.dataSource) { self.dataSour…

    iOS开发继续阅读