|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最近一直都在学习有关ios(苹果系统)的知识,而学习ios的最好方法就是研究iPhone和ipad。因为iPhone和iPad的应用程序都是用Objective-C语言来开发的,所以在接触ios之前,我必须有一定的Objective-C基础。FIR.im一向在只管兼容分歧利用习气的版本号情势,可是在利用中我们发明很多多少开辟者对怎样更好的用版本号来标示使用很生疏.这是篇基本文章,复杂先容iOS的版本号.
<br>
名词注释
- Version,一般说的版本号,是使用向用户宣扬申明时分用到的标识.一样平常有2段大概3段式,如:2.1,8.1.2
Version一样平常由产物部门断定,完整悬殊的更新必要改动主版本号,好比QQ4.0的变更十分年夜,主版本的变更会加倍吸援用户的眼球,以是有的使用会频仍的更新主版本号,好比FireFox20.0.两段式的副版本号既包括小功效更新也会包括bug修复等,三段式副版本基础都是新功效增加和年夜成绩修复,第三段则暗示不乱版本基础都是修复bug
- Build,编译号指一次独一编译标识,一般是一个递增整数(安卓强迫为数字,iOS能够是字符串)
Build都是给外部利用,用来断定一个独一版本.与后面提到的Version不会有太年夜接洽.
iOS开辟中,这个2个号码都能够恣意字符串或数字.
我们今朝碰到的情形有:
- 疏忽了Version或Build.这两个号中的一个终年的不会产生变更.
- 倒置了Version和Build.
<br>
猎取办法也很复杂:- NSDictionary*info=[[NSBundlemainBundle]infoDictionary];info[@"CFBundleShortVersionString"];//Versioninfo[@"CFBundleVersion"];//Build
复制代码 为何利用版本号
1.便利标示和相同
后面提到版本号更新会给推行发生必定的主动感化.以是版本号不要太长,假如像如许"我们盛大推出了某某某1.7.14.19257!",这个会让用户感到很有趣很像电视购物,并且也倒霉于传布.假如是"某某3.0,年夜有分歧!"大概就会发生更好的相同效果.
2.便利追踪Bug
一个使用有Bug是一定的,可是很快的定位办理成绩却表现出团队和程序员的才能.我们常常碰到有开辟者说我提交一个版本,可是下载上去有仍是旧的.我们帮他办理成绩的时分,他本人都弄不清哪一个是哪一个了,假如能在"关于"之类的中央显现以后的版本,就会简单找到成绩.
大概是测试团队的同事,大概手里同时有几个分歧分支的版本在测试,他们必要准确的形貌一个测试版本.
主动改动Build号
后面提到,Version是不必要主动变更的,依据产物大概市场部门的需求,合时的手动改一下就好.
1.agvtool(Apple-genericversioningtool)
agvtool,是苹果的命令行工具,也是集成在Xcode中最便利的工具.我们在主动编译SDK的剧本顶用的就是这个办法.实在就用了一行(其他的初级用法能够参考后面的链接):利用前必要在Xcode里复杂设置一下,如图:
<br>
2.基于SCM的版本把持号
SCM如今经常使用的有Git和SVN,另有一些绝对小众的好比hg这里就未几做先容了.
假如用Git/SVN来办理代码(信任已没有人不必了)我们能够用代码的提交次数来取代Build号.
- REV=`gitrev-listHEAD|wc-l|awk{print$1}`
复制代码 个中HEAD是分支名,代表以后分支,能够间接交换成其他分支名,好比master,dev.
这个剧本放到
- REV=`svnversion-nc|sed-es/^[^:]*://;s/[A-Za-z]//`
复制代码 前面都是一样的:- PlistBuddy-c"Set:CFBundleVersion${REV}""${TARGET_BUILD_DIR}"/${INFOPLIST_PATH}
复制代码 如许每次编译app的时分就主动把版本号加到Info.plist的CFBundleVersion键值下
把下面2行代码加到"BuildPhase>RunScript"就能够了:
<br>
3.基于日期工夫
用公布日期作为版本好也是很多使用经常使用的体例,由于好记好了解.这里间接附上代码:- REV=`date+%y%m%d`#输入格局141120的六位日期格局,能够依据本人喜好改动格局
复制代码 前面都是一样的:- PlistBuddy-c"Set:CFBundleVersion${REV}""${TARGET_BUILD_DIR}"/${INFOPLIST_PATH}
复制代码 利用办法同上.
Model的改变最好通过Notification来传播之前吃过这样的亏最好不要用delegate模式)UIViewController |
|