iOS填坑之路-关于国际化中一些不为人知的事情 | luckymore的学习笔记 

作者:JerryXia | 发表于 , 阅读 (14)
关于国际化其实可以看前面那篇 10 Tips =。=
写在最前面其实这篇文章对于99%的开发者来说,真的真的不会有什么特别大的用处。比如我问一个问题,在AutoLayout中,leading和left的区别是什么?trailing和right的区别是什么?基本所有关于AutoLayout的教程都会一笔带过,或者说,绝大多数情况下两者没有什么区别,所以可以不用去管它了。所以,两者到底有什么区别呢? leading和trailing会适配整个界面的布局方向,而left和right不会。何谓布局方向? 把你的设备语言切成阿拉伯语你就知道了。你会发现设置界面的Cell都倒过来了,如果你的应用支持阿拉伯语,你会发现你的所有界面都在X轴上被镜像了,简单的说,如果你的应用支持了阿拉伯语,那么在阿拉伯语言环境下,iOS除了会替换你的语言包外,还会把所有界面的布局变成从右往左。如果你用Xib做布局,如果约束是leading,那么在从右往左的布局中,组件则会跑到右边,如果约束是left,那它就会始终留在左边。这就是leading和left的区别。
所以大家知道为什么这篇文章对于99%的开发者来说并没有...阅读全文

 基于Aspects和JSPatch的热埋点方案 | luckymore的学习笔记 

作者:JerryXia | 发表于 , 阅读 (17)
关于Aspectshttps://github.com/steipete/Aspects
aspects是针对面向切面编程:Aspect Oriented Programming(AOP)的一种实现方案。AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。以埋点为例,虽然现在已经有像友盟这样强大的第三方埋点方案,但是这并不能满足一些公司的业务需求,如果要完全自定义地进行埋点,监听并统计用户的行为,使用传统的方案,必然导致对整个项目的代码进行大范围的修改。而使用面向切面编程的思想,则可以将埋点和系统原有的逻辑解耦,悄悄地完成埋点。
下面来看看Aspects是如何帮助我们实现这点的。
还是举个例子来说明:假设我们要统计某些页面的显示的次数,以往使用友盟来统计页面访问我们会这么做1234567- (void)viewWillAppear:(BOOL)animated {    [super viewWillAppear:animated];    //do something    if(self...阅读全文

 Co!orMix小记-关于开发的那点儿事 | luckymore的学习笔记 

作者:JerryXia | 发表于 , 阅读 (18)
关于 Co!orMix前几天, Cee 童鞋把 Co!orMix开源了。当时刚上架的时候,团队里的另外两个童鞋都发了文,@Cee 讲产品,@Albus 讲设计(这两篇文章都在 V2EX 上发布过)。
既然代码开源了,那是时候说一下项目本身了。
Co!orMix 里面并没有什么特别有技术含量的东西,可以说,任何一个人都可以毫不费力地把它做出来。对于新手来说,也值得一试。不过毫不谦虚地说,如果要达到零错误率,还是有一定难度的,而上线至今,它的 Crash 率一直保持在 0 ,这是我所引以为豪的。(欢迎大家试玩!偷偷说一句,我可是跟组里承诺过,只要出现一个 crash ,就请吃饭的哦!)
动手之前的思考无论是多简单的项目,开动之前必须要思考一下大致的架构。 Co!orMix 本身是一个相对很简单的游戏。
从页面考虑:主页、设置页、游戏界面、游戏结果页、引导页;从游戏本身考虑:题目、选项、得分、策略、游戏模式。
第一天晚上我们三个人商量出了游戏的大致功能和规则,我和 Cee 便直接开始讨论起了实现。由于游戏本身的复杂度不高,我们决定采用最传统的 MVC 来完成这个应用。 
Mode...阅读全文

 记我的本科毕业设计——绿茶 | luckymore的学习笔记 

作者:JerryXia | 发表于 , 阅读 (10)
本科的最后一个项目——毕业设计,我选择了困难模式。第一次自己做原型、画 Sketch 、设计产品第一次使用 Swift 独立开发项目这款 App 叫做 绿茶, 虽然差一个字就成了奇怪的名字, 不过其实很小清新的! 虽然没有上线, 但是其实很完整戳我进项目地址
背景不知不觉博客已经荒置了快1年了,之前的最后一篇文章还是在前司的时候,后来跟女朋友过了一段清闲的小日子,做完了本科的毕设,顺利地拿到了毕业证书,然后浪了一个暑假。
研究生开学也有半月,虽然接了外包,有了兼职,当了助教,老板那边还有成堆的活,但是趁着中秋假期,忙里头像把这篇很久以前就想写的文章写一下。
在我们学院,本科生的毕业设计一般分四类:导师选题、实习项目、自主选题以及实训。
导师选题:顾名思义,就是老师给一个命题,通过双向选择确定学生来以这个命题作为毕设题目完成对应项目,一般都是已有的明确需求或者是研究性质的命题,但是不会太难,大部分是以团队为单位
实习项目:由于院里同学大部分大四都会出去实习,所以学院允许以在实习单位所做的项目为命题写毕业论文,这一般意味着不需要特地写一个项目只需要写一篇论文就能完成了,所以是最简...阅读全文

 Swift 3.0 标准库源码阅读笔记——String | luckymore的学习笔记 

作者:JerryXia | 发表于 , 阅读 (0)
都说代码是最好的文档,标准库的代码+注释真的是比官方文档还有用!先拿最常用的 String 开刀!
阅读过程中可以配合 playground 文件:String.playground
用法简介Swift 中的 String 是一个 Unicode 的字符串值(struct)Swift 中的 String 可以和 Objective-C 中的 NSString 相互桥接,很多时候将 String 转换成 NSString 来做一些针对字符串的处理会更加方便。Swift 中的 String 还可以很完美地和 C 层进行交互,实现了一些 C 层次的 API,并且结果完全一致。
首先先讲讲 String 的一些基本用法:
创建string literals  字符串构建,最简单的构建方式1let greeting = "Welcome!"string interpolation 插值构建12let name = "Rosa"let personalizedGreeting = "Welcome, \(name)!"修改String 为值类型(struct),修改一个 string 的拷...阅读全文