ProtocolBuf Swift 使用
ProtocolBuf Swift 使用环境搭建Mac安装swift-protobuf 1brew install swift-protobuf 使用Podfile集成Xcode再Podfile里添加 1pod 'SwiftProtobuf' 然后在此目录下打开terminal运行 1Pod install 使用新建BookInfo.proto 1234567syntax = "proto3";message BookInfo { int64 id = 1; string title = 2; string author = 3;} 在此文件同目录下执行下面命令,生成.swift文件 1protoc --swift_out=. BookInfo.proto 将.swift文件拖入工程,编译一下,使用 123456789101112131415161718192021// Create a BookInfo object and populate it:var info = BookInfo()i...
Mapping architecture armv7 to i386
最近项目里升级后,编译警告多了起来,看起来好碍眼,就想着改掉,先从Debug warning: Mapping architecture armv7 to i386.这个开始。 看了警告之后,知道是对应target下的Build Settings里architecture的问题,然后去检查对应target下,发现today widget、iwatch widget里Valid Architectures的Release跟Debug不一致,然后就手动修改为 $(ARCHS_STANDARD),编译,done,完美解决。
Embedded binary is not signed with the same certificate as the parent app
Embedded binary is not signed with the same certificate as the parent app背景Xcode 10之后New Build System变为默认,编译之后一直报错,报错信息:Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target’s code sign settings match the parent app’s. eg: 但是在Legacy Build System下就没有问题。刚开始直接粗暴的改回Legacy Build System,一直没来得及查具体原因,最近得空了,仔细查了一下。 过程搜到的好多人说,是因为keyChain里证书的信任状态不对,要用系统默认,不能强制始终信任。but,我检查了之后,我的证书确实是系统默认的状态。 在stackoverflow上iOS error “Embedded binary is not signed ...
批量图片压缩 & 替换
批量图片压缩 & 替换背景最近产品提了个需求,要求把包压缩一下,而项目是OC&Swift混编,这期还加上了RN,还要包不能增大。脑壳疼。。。。他则不上天呢。但需求出来了,还是要做的。所以就想了下面几个方法: 先用LSUnusedResources分析项目中无用的图片和类,删除; 然后对项目中的图片进行压缩替换; 再接着分析linkMap文件,找出大的文件进行优化。 基于clang插件的一种iOS包大小瘦身方案 实现这篇就是关于第二步的,项目里大约有1600多张图片,之前几次压缩都是按大小排序,然后把大于10kb的图片一个个上传到tinypng上压缩,再下载替换。tinypng web最多支持一次20张,每次上传压缩,然后等,就问问烦不烦。。。。 图片批量压缩so,这次我终于受不了,我要找批量压缩的,还真给我搜到了图片批量压缩脚本(Python),这种使用方式GitHub上已经写得很清楚了,每月可以500张批量压缩,然后有一个输出文件夹: 使用这个脚本的时候,要注意: 安装Python 安装click和tinify 到此处申请 API key: https...
CocoaPods私有库生成
CocoaPods私有库生成
iOS使用IconFont
IconFont的使用github链接背景: 最近设计提了要求,切图用IconFont一开始,在搜了IconFont的使用后,选中了TBCityIconFont,使用了之后,发现对于图片的支持不太好,就是长宽不等的图片,显示的时候会被截断,在具体实现里也没发现修改的地方。 然后就pass了,换了另一个Swift的Iconic的第三方库,这个库有个好处,是可以自动把.ttf文件里的Icon生成一个枚举使用的时候特别方便。然而缺点是安装的时候麻烦,之前只是稍微麻烦,最近变得特别麻烦,需要设置FONT_PATH。而且不支持最新版本的Swift,每次更新.ttf字体文件,都要改一次。 实在是受不了了,今天就抽空自己写(抄)了一个。😄有兴趣的可以自己看参考链接,其实就是参考链接里内容的整合。 实现首先,我想要的是,传入一个Int类型(eg: 0xe654)或者字符串类型(eg :\u{E61A})都支持。 然后如果是本地的文件,我希望可以不用手动收入unicode码。最后就是图片支持宽高不等的显示。 整体的原理是Working with icon fonts in iOS. Code...
Xcode插件的实现-JSON格式化
背景:开发中经常遇到需要格式化JSON字符串的情况,每次都是百度在线格式化解析好不方便,某天看到APP Store里有Xcode关于这个的插件,卖的老贵了,哈哈哈,于是就想自己也弄一个,先调研一下JSON格式化的实现原理,然后再看看Xcode插件的实现,最后还可以写个Mac版,给自己大大的赞😄
用搬瓦工搭建ss
因为工作的原因会经常使用Google搜索,最初一直是买的VPN,或者蓝灯,后来发现有时候下载东西的时候速度特别慢。然后想自己好歹也是个技术,要自己动手丰衣足食。 前年开始用搬瓦工搭建ss,19.9$一年,当时记得操作好麻烦,还求助了别人。然后去年续费,我感觉自己搭建的还蛮不错,自己用,看视频比较少,也不访问违法网站,速度也可以接受。 今年收到邮件说,不能续费了。。。。因为当时买的是openVZ,不支持续费了。要迁移到新的KVM。郁闷了好久。但还是要用啊。前阵子黑五的时候,就又买了个29.9$一年的,打算看看视频。买了之后,再次搭建,我发现,特别简单,不到十几分钟就搞定了。想想我还有上次搭建的阴影,也是够了。 至于为什么突然想弄一个关于这个的文章,一呢是老是会有人问我借账号用,不给用吧,不好意思,给用吧,又怕他们访问什么网站,把我的给封了。二来,是我想保存一下自己的操作流程,这样网上找不到的时候,自己还有个备份。 下面的内容都是转载的,但是我自己试过了,我的新SS就是按照步骤搭建的 转载搬瓦工 VPS 搭建 Shadowsocks (SS) 科学上网图文教程 | SS多用户配置...
昨日见闻
本来应该昨晚写日记的,但是晚上是在太冷,完全不想动,但昨天遇到的事情又确实想要记录,所以今天补录到博客里。 昨天去参加互联网周末的杭州余杭长乐林场活动。 计划永远赶不上变化,提前预留足够的时间还是好的因为要早上7:20集合,所以我定了3个闹钟;6:00起床,6:30出门,7:00上地铁。早上5点多起来去了个厕所,然后就等闹钟响,结果等我醒来才发现已经6:10分了,6:00的闹钟没响,因为我设置的就寝时间的问题。然后爬起来洗漱之后,出门已经是6:45了,路上买了个煎饼,到地铁站还不到7:00,然而地铁刚刚出发,下一班诡异的地铁空的,不开门,然后等我上车已经7:05了;不过好在我留的时间还算足够,没有吃到。 保持平常心我其实特别不喜欢自我介绍,因为容易紧张,而且不知道说什么。但由于参加的单身活动,所以自我介绍又是少不了的。我当时就感觉或许我不应该出来,又要搞砸了——整段垮掉。。。领队开了个好头,给了个模版,介绍自己名字、职业、哪里的人、兴趣爱好的话,美剧也算。就想自己要说什么,知道自己要说什么之后,再想怎么说。然后我开始试着调整,反正又没人认识,怕什么,而且又不是一定要在这次活动...
在Swift中使用error来控制流程
此文是翻译原文链接:Using errors as control flow in Swift app和项目里管理控制流会对代码的执行速度,代码的调试复杂度有重大的影响。代码的控制流本质上是函数和声明的执行顺序,及代码执行路径。 尽管Swift提供了很多工具定义控制流——例如if, else, while 及 optional;这周,我们来看一下,如何通过Swift编译时错误来抛出和处理model,来让控制流程更容易管理。 抛出可空的值可选值,作为Swift的重要特征,处理空的数据时可被合法的忽略;它也经常被用作给定函数的来源样板在控制流程中。 下面,重写了从app中bundle加载、调整图片的方法。由于每一步操作都返回了可空的图片,不得不写多个guard语句,告诉函数哪里可以退出: 12345678910111213func loadImage(named name: String, tintedWith color: UIColor, resizedTo size: CGSize) -> UIIma...