XCode9的新变化
XCode9已经随着ios11的发布发布了,那么在这个XCode9版本中有哪些变化呢?
1 折叠代码
焦点在方法的实现体的方法名上,按comman键,则整个函数会被框住.用来标志这个方法的起点和终点
此时单击,出现菜单
在菜单里,有个Fold,可以用来折叠方法,这个折叠现在有个动画效果
在其它上面点击
常用的重构方式都已经集成在这个右键弹出菜单中了,可见,XCode9对于重构的支持度又增加了,以后重构代码将更加方便快捷
在XCode9之前,在变量或方法上,按CMD+单击,是直接Jump to Definition,但是现在,是弹出这个菜单,对于跳转到变量的定义,就多了一步了,开始可能会觉得不方便
对于想直接跳转到变量定义,现在是 control+command+单击
当然,如果你还是觉得以前的cmd+单击 跳转到变量定义,你更习惯,可以在
更改为以前那种行为
2 关于警告
我们定义一个不带参数的block,通常是如下的方式
1
|
typedefvoid (^UpdateSwichBtnBlock)(); |
在xcode9中会提示一个警告
1
2
|
This block declaration is not a prototype Insert ‘ void ' |
解决方式可以是如下的几种
1
|
typedefvoid (^UpdateSwichBtnBlock)( void ); |
但是这样,很多第三方要改,涉及的面太大了,目前可能不太适合,虽然这个是趋势.
或者,如果只是很少的地方,也可以使用
1
2
3
4
|
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wstrict-prototypes" typedefvoid (^UpdateSwichBtnBlock)(); #pragma clang diagnostic pop |
彻底的暂时解决所有这种警告的方式
在工程的设置中
设置为NO,则这些警告就消失了
不过这不是一种好习惯,只是暂时性的不让提示这种类型的警告而已
3 重构相关
对一个方法或者变量的重命名,在方法上CMD+单击,出现的菜单,选择rename
可以看到,它把重命名会出现的改动,都动画折叠起来,让你更有概念,将会影响哪些,更直观!
4 cmd +/- 可以用来调整编辑器的字体大小了
在展示PPT的时候将很有用
5 Source Control的极大增强
XCode内置的git系统感觉已经很强大了,感觉以后可以抛弃三方的了.
支持Github账户了
XCode - Preferences -Accouts 可以登录你的GitHub账户,登录后如下
登录后,通过Xcode的菜单
Source Control 最下方的clone,就可以clone你的github上的工程了,是不是非常方便
上面还贴心的提供了搜索框,如果你的github上的工程很多,也是很方便的定位的
打开任意一个git工程,
提供了一列新的 Show the Source COntrol navigator
这里列出来了你的branch的相关信息,可以很方便的切换分支,等等git操作
在右边的编辑框中,可以看到最上面一排
ALL, Last 24 hours ,Last 7 Days ,Last 30 Days
,还有一个Filter过滤框,可以非常方便的用来定位到我们需要寻找的提交记录.
双击任意一次提交记录,
可以看到这次的详细更改内容
对于我们常用的git的merge tag等,也都内置了强力的支持
第三方git客户端如Tower何Source Tree,分分钟要被抛弃的节奏呢.
6 新的构建系统
这个新的构建系统现在还只是Preview,它是纯swift编写的,据说对编译速度的提升帮助很大,不过目前并没有成为默认,苹果说不远的将来将会成为默认的Build .可以参考苹果的官方文档xcode_9.html
这里有个 New Build System(Preview)
7 crash可以直接在本机上看到了
当然了,这要用户在机器上允许,还有你提交到appstore时候允许了才会有.
8 runtime问题检测
在8中,已经包含了Address Scanitizer和Thread Scanitizer,在Xcode9中,又新增了 Undefiner Behavior Scanitizer,它可以实时的检测一系列的问题.不过我们更能明显感受到的是Main Thread Checker,它可以在运行时确保你没有把UI更新 代码写在了非主线程中
例如,代码中
可见还是很强大的,虽然我们没有Fabric的源码,但是其内部调用了[UIApplicationsharedApplication].statusBarOrientation],还是被检测到了
当然了,如果你想关掉它,可以在 scheme editor中操作
9 模拟器可以多开了,并且,模拟器可以登录
不仅如此,现在模拟器也可以登录你的appid了,这样,就很方便的同步联系人等信息到模拟器上了,以前要测试联系人相关的功能,还要自己一个个的新建,现在就方便多了
还有,如果开启了Photo的Share,那么模拟器中应该也能同步照片过来了,以前那种一个个的导入图片的方式终于可以说再见的时候了
模拟器现在可以任意的调整大小了,不得不说这个功能太酷了
登录appid后,Files就可用了,可以浏览到你的iCloud Drive中的内容了,对于要共享文件到模拟器的需求来说,也变得超级方便
模拟器的外观样式也回归了,直接是iPhone的外观了,以前可能是因为模拟器不能任意调整大小,所以才没外观的吧
当然了,你可以去掉外观皮肤. 在模拟器的Window show Device Bezels,去掉选项就和以前一样了
10 无线开发
这个只支持ios11的机器,很简单,只要在Device那打开支持就行.
11 Folder和Group的同步性
之前,我们在XCode中,更改Folder的名字,在FInder中工程对应的文件夹的名字并不会同步的改变,这会造成我们重命名文件夹变得非常不方便,往往要先在XCode中移除,然后在Finder中重命名,再添加回Xcode
现在 在Xcode9中重名命Folder,Finder中的也同步的改变了
我们之前建议一个虚拟的group,并不会在对应的文件夹中建立真实的目录,当然,这可能是你需要的,也可能是你不需要的功能.在9中,默认行为改变了.变成了会建立对应的真实文件夹.如果还想像之前那样只是建立虚拟的group,需要选择New Group without Folder
你可能你会担心,区分不了这个group到底是虚拟的,还是实际的
放心,苹果给出了标识来区分的,虚拟的左下角有个小的三角形
当你移动一个Group的时候(虚拟的实际的都一样),它会同步的把对应的真实文件夹也移动到对应的位置,这个极大的方便了我们后期调整工程的目录结构,之前调整那才叫痛苦,在工程中调整了后,工程中的结构和真实的文件夹下的对应不上,以后不会出现这种情况了
这里发现XCode9的一个文件同步的bug
如图,我们建立的工程如下
其中 xuni这个是一个虚拟目录
这个时候,如果我们将整个 xuni移动到Views下,
可以看到,xcode出问题了,本来我只是将xuni移动到Views下,可现在 真个的View1都移动了,导致SecondView消失了....
希望苹果在下个版本中能解决这个问题
其实从上面来看,建立实际目录更不容易出问题,可能这也是苹果将New Group的默认行为改为建立对应的实际文件夹了吧
不常用的更新
Server & Bots
现在XCode内置了一个XCode Serever用于 持续集成,因为很少用到,也就不展开了
XCode9的新变化的更多相关文章
- [转]Material Design Library 23.1.0的新变化与代码实战
Design Library出来已经快有一个月了,当时大概看了一下介绍这个新版本变化的译文,内容不多,给我印象最深的就是Percent lib.AppBarLayout 和NavigationView ...
- Material Design Library 23.1.0的新变化与代码实战
Design Library出来已经快有一个月了,当时大概看了一下介绍这个新版本变化的译文,内容不多,给我印象最深的就是Percent lib.AppBarLayout 和NavigationView ...
- 从iOS 11 UI Kit中谈谈iOS 11的新变化
北京时间9月20日凌晨1点,iOS 11终于迎来了正式版的推送,相信各位小伙伴已经在第一时间进行了升级.iOS 11毫无疑问是一次大规模的系统更新,UI.系统内核.锁屏等多方面都进行了不同程度的改进. ...
- Delphi XE7 GPS控件android下的新变化
Delphi XE7 GPS控件的Android新变化 GPS控件的Accuracy可以起作用了,Accuracy>0时: 1--100:ACCURACY_HIGH 101--500 ...
- 前端面试之HTML5的新变化
前端面试之HTML5的新变化 H5新增语义化标签 头部标签 <header> :头部标签 <nav> :导航标签 <article> :内容标签 <secti ...
- Xcode9新变化
http://www.cnblogs.com/lurenq/archive/2017/09/26/7594909.html
- iOS8.3发布了Swift 1.2带来哪些新变化
苹果前几日在面向开发者推送iOS 8.3 Beta的同时,还发布了版本号为6D520o的Xcode 6.3 Beta,其中便包含了iOS 8.3 Beta和OS X v10.10 SDK,并进一步提升 ...
- [译] OpenStack Kilo 版本中 Neutron 的新变化
OpenStack Kilo 版本,OpenStack 这个开源项目的第11个版本,已经于2015年4月正式发布了.现在是个合适的时间来看看这个版本中Neutron到底发生了哪些变化了,以及引入了哪些 ...
- [译] OpenStack Liberty 版本中的53个新变化
一个新的秋季,一个新的OpenStack 版本.OpenStack 的第12个版本,Liberty,在10月15日如期交付,而且目前发行版本已经备好了.那么我们期望能从过去六个月时间的开发中获得些什么 ...
随机推荐
- 【JDBC&Dbutils】JDBC&JDBC连接池&DBUtils使用方法(重要)
-----------------------JDBC---------- 0. db.properties文件 driver=com.mysql.jdbc.Driver url=jdbc: ...
- 2018.08.31 bzoj1426 收集邮票(期望dp)
描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且 买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所以 ...
- Linux服务器部署系列之四—DHCP篇
DHCP服务器的配置是Linux服务器配置中最简单的服务之一,网上也有很多相关文档,不过大部分都只是讲解了配置.虽然我这篇文档也不一定很完善,不过我还是希望能够尽量说得明白一些,同时也希望大家能够提供 ...
- b4和tncl_extract_UNCL_new
# -*- coding:utf-8 -*- import re ''' 适应新版本 注意: 1)17A文件改完后缀后,需要转为UTF-8无BOM格式,才能正确处理. 2)fr = open(file ...
- 20145234黄斐《java程序设计》第六周
教材学习内容总结 第十章:输入与输出 InputStream与OutputStream 流(Stream)是对「输入输出」的抽象,注意「输入输出」是相对程序而言的 InputStream与Output ...
- 西邮Linux兴趣小组2014级免试挑战题 (续)
在上一篇的博客中已经解到第四关了,现在继续挑战-- [ 第四关] 在上一关解压成功后,生成了一个file文件.用vim的二进制格式打开,转成十六进制,发现文件头格式如下: 是个以ELF字符开头的文件, ...
- 分离 桂林电子科技大学第三届ACM程序设计竞赛
链接:https://ac.nowcoder.com/acm/contest/558/H 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 团队项目(HCL队)第二周
一.项目介绍 1.内容 我们队选择的题目是经典90坦克大战的java实现,后续会加入ai,以实现更丰富的体验. 2.预期使用数量 原版的经典90坦克大战拥有众多粉丝,我们在其上进行拓展,目前预计用户量 ...
- c3p0----获取不到链接
最近别人的项目,因为经常获取不到链接出错,我好奇也就跟着摆弄了一把,使用的插件是:c3p0+spring+ibatiS,当然事务管理部分也配置上了配置如下: <bean id="dat ...
- Linux - 修改文件编码
enca -L zh_CN -x UTF- file