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用于 持续集成,因为很少用到,也就不展开了

时间: 2024-10-19 08:17:44

XCode9的新变化的相关文章

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

Design Library出来已经快有一个月了,当时大概看了一下介绍这个新版本变化的译文,内容不多,给我印象最深的就是Percent lib.AppBarLayout 和NavigationView的变化,当然还有Design Lib的一些控件内部实现的变化没有介绍,从而使得在使用新版本的控件时候难免因为版本的不同会发生一些异常,而本人正好在上个星期对一个项目换库时发现了这个问题,什么问题呢? NavigationView使用注意的问题 就是NavigationView的内部实现发生了改变,它

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

Design Library出来已经快有一个月了,当时大概看了一下介绍这个新版本变化的译文,内容不多,给我印象最深的就是Percent lib.AppBarLayout 和NavigationView的变化,当然还有Design Lib的一些控件内部实现的变化没有介绍,从而使得在使用新版本的控件时候难免因为版本的不同会发生一些异常,而本人正好在上个星期对一个项目换库时发现了这个问题,什么问题呢? NavigationView使用注意的问题 就是NavigationView的内部实现发生了改变,它

拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar..)

转载 请注明 明桑Android Android 5.0 Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言.看起来很受欢迎,可它的普及似乎不那么顺利,刚过去不久的Google I/O 2015都已经推出了新的Android M预览版.即使是这样,原生版本的Android推广似乎一直没取得google预期的结果-不管怎样,作为开发者我们关心的无非是这个平台是否好用,能否开发出精致而又有趣的应用.好在Material Design我认为是成功的,官方在And

Delphi XE7 GPS控件android下的新变化

Delphi XE7 GPS控件的Android新变化 GPS控件的Accuracy可以起作用了,Accuracy>0时:      1--100:ACCURACY_HIGH  101--500:ACCURACY_MEDIUM  其它值时:ACCURACY_LOW Accuracy=0时根据以下方式进行定位:1.GPS_PROVIDER2.NETWORK_PROVIDER3.PASSIVE_PROVIDER Delphi XE7以前版本GPS控件优先使用网络定位,而XE7是根据Accuracy来

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

OpenStack Kilo 版本,OpenStack 这个开源项目的第11个版本,已经于2015年4月正式发布了.现在是个合适的时间来看看这个版本中Neutron到底发生了哪些变化了,以及引入了哪些新的关键功能. 1. 扩展 Neutron 开发社区 (Scaling the Neutron development community) 为了更好地扩展 Neutron 开发社区的规模,我们在Kilo开发周期中主要做了两项工作:解耦核心插件以及分离高级服务.这些变化不会直接影响 OpenStac

Swift2.2中的新变化

原文链接点击这里 Swift2.2已经更新了,这次更新去除了一些难用的语法还添加了一些缺失的特性,并且还弃用了一些有争议的语言特性.这篇文章将详细介绍Swift2.2中的一些主要的变化和一些细微的改变,还会展示一些实际的代码例子来让你更快的上手Swift2.2. 1. ++ 和 – 被弃用了 Swift 2.2正式地弃用了++和–操作符,意味着他们仍然可用但当你用到时会得到哦一条警告.弃用一般是完全移除的第一步,因此在这种情况下在Swift 3.0中这两个操作符将会被移除掉. 在使用这两个操作符

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

一个新的秋季,一个新的OpenStack 版本.OpenStack 的第12个版本,Liberty,在10月15日如期交付,而且目前发行版本已经备好了.那么我们期望能从过去六个月时间的开发中获得些什么呢?  正如过去几年一样,每个版本都有大量的变化和引入新的功能,但是现在,OpenStack 已经达到一个新的位置,那就是大部分的必要功能都已经齐备了,因此,现在更多的是增量式的变化-只有一些偶然性爆发的领域是例外,比如容器.  当然,这不是说容器就是过去六个月内的所有值得期待的东西.除了容器,还有

iOS9编程GOGOGO:XCode7新变化

做一个关于栈视图 UIStackView的Demo,先看看XCode7的变化 关于StoryBoard: 启动画面由xib变为Storyboard StoryBoard引用: 如今能够在一个StoryBoard中加入对另外一个StoryBoard的引用,在多个SB中进行切换不用再写代码了.如图: 曾经的方式(SWIFT): override func viewDidLoad() { super.viewDidLoad() var sb : UIStoryboard let del = UIApp

用户将无法自行关闭 Win10专业版应用商店新变化

现在,Windows10专业版系统中已经有了一些新的变化,如果我们把系统升级到Windows10专业版Build 1511(也就是Win10 TH2),那么以后就无法关闭Win10应用商店了,即使是通过群组政策修改也不行. 经过365bet系统城查询更多信息,该政策仅适应于Win10专业版系统,而在Win10企业版和教育版中,Win10商店可关闭是一项保留功能.目前一位微软发言人已经确认此事: “微软给予企业级客户提供选择应用下载和安装环境配置选择,不管是工作中还是生活中.IT专业人员通过Win