iOS

编写高效代码(一)

Posted by     JT on July 18, 2017

参考Effictive Objective-C 2.0 第一章节

正文

在类的头文件中尽量少引入其他头文件

  • 减少编译时间
  • 解决两个类互相引用的问题(可能引起编译错误)

多用字面量语法,少用与之等价的方法

使用字面量语法可以缩减源代码长度,使其更为易读,也更安全。 例:NSString *someString = @”Effective Objective-C 2.0”;

字面数值

NSNumber *intNumber = @1; NSNumber *floatNumber = @1.5f; NSNumber *doubleNumber = @3.141492; NSNumber *boolNumber = @YES; NSNumber *charNumber = @’a’;

字面量数组

NSArray *animals = @[@”cat”,@”dog”]; NSString *animal = animals[1];

  • 解决两个类互相引用的问题

xcodebuild 的使用可以用 man xcodebuild查看。

查看项目详情

cd 项目主目录

xcodebuild -list

输出项目的信息

Information about project “StackGameSceneKit”: Targets: StackGameSceneKit StackGameSceneKitTests

Build Configurations: Debug Release

If no build configuration is specified and -scheme is not passed then “Release” is used.

Schemes: StackGameSceneKit

要留意 ConfigurationsSchemes这两个属性。

自动打包流程

生成 archive

生成archive的命令是 xcodebuild archive

xcodebuild archive -workspace ${project_name}.xcworkspace
-scheme ${scheme_name}
-configuration ${build_configuration}
-archivePath ${export_archive_path}

  • 参数一:项目类型,,如果是混合项目 workspace 就用 -workspace,如果是 project 就用 -project

  • -scheme:项目名,上面xcodebuild -list中的 Schemes

  • -configuration :编译类型,在configuration选择, Debug 或者 Release

  • -archivePath:生成 archive 包的路径,需要精确到 xx/xx.archive

首先需要创建一个AdHocExportOptions.plist文件

导出ipa包

导出.ipa包经常会出现错误,在ruby2.4.0版本中会报错,所以请使用其他版本的ruby,最初的原因是使用了 ruby2.4.0 进行编译时出现的错误。

解决方法是低版本的 ruby 进行编译,如使用系统版本:rvm use system。后面升级macOS系统(10.12.5)后发现 ruby2.4.0 能成功 导出ipa包了。

导出ipa包使用命令:xcodebuild -exportArchive

xcodebuild -exportArchive
-archivePath ${export_archive_path}
-exportPath ${export_ipa_path}
-exportOptionsPlist ${ExportOptionsPlistPath}

  • archivePath:上面生成 archive 的路径
  • -exportPath:导出 ipa包 的路径
  • exportOptionsPlist:导出 ipa包 类型,需要指定格式的plist文件,分别是AppStroeAdHocEnterprise,如下图

选择这三个类别需要分别创建三个plist文件:

  • AdHocExportOptionsPlist.plist

  • AppStoreExportOptionsPlist.plist

  • EnterpriseExportOptionsPlist.plist

上传到 Fir

将项目上传到 Fir

下载 fir 命令行工具

gem install fir-cli

获取 fir 的 API Token(右上角)

上传

fir publish “ipa_Path” -T “firApiToken”

自动打包脚本

再次提醒,请不要使用 ruby 2.4.0 运行该脚本!,若在 ruby 2.4.0 下编译失败,请切换低版本的ruby。

切换完毕记得重新安装 fir 命令行工具。

脚本我fork了 jkpang 的脚本进行修改,添加了自动上传到 fir 的功能。

使用方法在Github上有详细介绍。

GitHub:https://github.com/qiubaiying/iOSAutoArchiveScript

Ruby相关

利用 自定义终端指令 简化打包过程

以zsh为例:

open ~/.zshrc 添加自定义命令 cd + sh

alias mybuild=’cd 项目地址/iOSAutoArchiveScript/ && sh 项目地址/iOSAutoArchiveScript/iOSAutoArchiveScript.sh’ 这样打开终端输入mybuild,就可以轻松实现一键打包上传了