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的新变化的更多相关文章

  1. [转]Material Design Library 23.1.0的新变化与代码实战

    Design Library出来已经快有一个月了,当时大概看了一下介绍这个新版本变化的译文,内容不多,给我印象最深的就是Percent lib.AppBarLayout 和NavigationView ...

  2. Material Design Library 23.1.0的新变化与代码实战

    Design Library出来已经快有一个月了,当时大概看了一下介绍这个新版本变化的译文,内容不多,给我印象最深的就是Percent lib.AppBarLayout 和NavigationView ...

  3. 从iOS 11 UI Kit中谈谈iOS 11的新变化

    北京时间9月20日凌晨1点,iOS 11终于迎来了正式版的推送,相信各位小伙伴已经在第一时间进行了升级.iOS 11毫无疑问是一次大规模的系统更新,UI.系统内核.锁屏等多方面都进行了不同程度的改进. ...

  4. Delphi XE7 GPS控件android下的新变化

    Delphi XE7 GPS控件的Android新变化 GPS控件的Accuracy可以起作用了,Accuracy>0时:      1--100:ACCURACY_HIGH  101--500 ...

  5. 前端面试之HTML5的新变化

    前端面试之HTML5的新变化 H5新增语义化标签 头部标签 <header> :头部标签 <nav> :导航标签 <article> :内容标签 <secti ...

  6. Xcode9新变化

    http://www.cnblogs.com/lurenq/archive/2017/09/26/7594909.html

  7. iOS8.3发布了Swift 1.2带来哪些新变化

    苹果前几日在面向开发者推送iOS 8.3 Beta的同时,还发布了版本号为6D520o的Xcode 6.3 Beta,其中便包含了iOS 8.3 Beta和OS X v10.10 SDK,并进一步提升 ...

  8. [译] OpenStack Kilo 版本中 Neutron 的新变化

    OpenStack Kilo 版本,OpenStack 这个开源项目的第11个版本,已经于2015年4月正式发布了.现在是个合适的时间来看看这个版本中Neutron到底发生了哪些变化了,以及引入了哪些 ...

  9. [译] OpenStack Liberty 版本中的53个新变化

    一个新的秋季,一个新的OpenStack 版本.OpenStack 的第12个版本,Liberty,在10月15日如期交付,而且目前发行版本已经备好了.那么我们期望能从过去六个月时间的开发中获得些什么 ...

随机推荐

  1. 05 数据库入门学习-正则表达式、用户管理、pymysql模块

    一.正则表达式 正则表达式用于模糊查询,模糊查询已经讲过了 like 仅支持 % 和 _ 远没有正则表达式灵活当然绝大多数情况下 like足够使用 #语法 select *from table whe ...

  2. Devexpress VCL Build v2013 vol 14.1.5 发布

    What's New in 14.1.5 (VCL Product Line)   New Major Features in 14.1 What's New in VCL Products 14.1 ...

  3. 2018.07.22 洛谷P3106 GPS的决斗Dueling GPS's(最短路)

    传送门 图论模拟题. 这题直接写3个(可以压成一个)spfa" role="presentation" style="position: relative;&q ...

  4. composer 安装扩展失败的决绝方法

    https://getyii.com/topic/32

  5. Android 长时间运行任务说明

    android 4.0 后,小米手机需要授权 自动启动 (在安全中心权限里设置),不然AlarmManager设置系统闹钟将不起作用

  6. 【Unity】1.3 Unity3D游戏开发学习路线

    分类:Unity.C#.VS2015 创建日期:2016-03-23 一.基本思路 第1步--了解编辑器 首先了解unity3d的菜单,视图界面.这些是最基本的基础,可以像学word操作一样,大致能明 ...

  7. 编译hbase-1.2.3源代码

    目录 目录 1 1. 约定 1 2. 安装jdk 1 3. 安装maven 1 4. 网络配置 2 4.1. eclipse 3 4.2. maven 3 5. 从hbase官网下载源代码包: 4 6 ...

  8. storyBoard中取消键盘第一响应

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {     [self.view endEditing:YES]; } ...

  9. NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象 - lady-奕奕的个人空间 - 开源中国社区

    一.了解NSUserDefaults以及它可以直接存储的类型 NSUserDefaults是一个,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一个前 ...

  10. 股票——成交量加权平均价VWAP

    成交量加权平均价是将多笔交易的价格按各自的成交量加权而算出的平均价,若是计算某一证券在某交易日的VWAP,将当日成交总值除以总成交量即可.VWAP可作为交易定价的一种方法,亦可作为衡量机构投资者或交易 ...