主题列表:juejin, github, smartblue, cyanosis, channing-cyan, fancy, hydrogen, condensed-night-purple, greenwillow, v-green, vue-pro, healer-readable, mk-cute, jzman, geek-black
贡献主题:https://github.com/xitu/juejin-markdown-themes
theme: juejin
highlight:
iOS摸鱼周报,主要分享大家开发过程遇到的经验教训及学习内容。成立的目的一个是开发知识碎片化,需要有一个地方去总结并用于回顾;另一个是为了提醒自己不断学习,内卷日益严重的开发环境下,不进则退。
虽说是周报,但当前内容的贡献途径还未稳定下来,如果后续的内容不足一期,可能会拖更到下一周再发。所以希望大家可以多分享自己学到的开发小技巧和解bug遭遇。
周报仓库在这里:https://github.com/zhangferry/iOSWeeklyLearning,可以查看README了解贡献方式;另可关注公众号:iOS成长之路,后台点击进群交流,联系我们。
开发Tips
开发小技巧收录。
IAP内购管理
推荐来源:zhangferry
处理内购时,如果我们需要应用内增加取消内购的入口,因为我们无法直接取消内购,只能将用户指引至苹果的内购管理界面,由用户在那里操作。管理内购的链接有两个:
https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/manageSubscriptions
https://apps.apple.com/account/subscriptions
前者是旧版链接,mac端能正常访问,但部分iPhone机型访问不了;后者为新版链接,多端都可以访问,最新版苹果文档标注推荐使用第二个链接。
除数为0的情况
推荐来源:zhangferry
swift var num1: Int = 0 var re1 = 10 / num1 print(re1)
这里会crash,出错信息为:Fatal error: Division by zero
swift var num2: Double = 0 var re2 = 10.0 / num2 print(re2)
将Int改为Double则不会crash,输出结果为inf
,代表无限大
swift var re3 = Int(re2) print(re3)
将re2
转成Int还是会crash,出错信息为:Fatal error: Double value cannot be converted to Int because it is either infinite or NaN
为什么在数学中无意义的除0操作,用Int除时会crash,在Double除时不crash呢,还得到了一个inf。
首先说Double,它有两个特殊的值,inf和nan,前者代表无限大,后者代表无意义,nan是0/0的结果。
那为什么Int会crash呢,甚至在显式地将0作为除数时会被编译器识别并报错。这是因为Int不能代表无限大,Int根据CPU是32还是64位会有对应最大值 2^31-1 和 2^63-1 。所以它不能表示所有自然数,也就没有无限大的概念,所以在做除数会出现崩溃。
除了Swift,OC,C,C++,Java都是这样设计的设计,其他语言没验证,但我估计应该也应该沿用这个思路,0不能做Int的除数但可以做Float和Double这种浮点型的除数。
使用altool上传IPA至AppStore脚本
推荐来源:tzqiang
脚本主要功能为以下内容:
``bash validate_upload_ipa() { validate=