美文网首页
IOS-XCode9的新变化

IOS-XCode9的新变化

作者: 树下敲代码的超人 | 来源:发表于2017-09-22 20:49 被阅读0次

    收 集 文 章 / 超 人
    文章来源 XCode9的新变化

    本文是收集的大神资料,非本人原创
    

    折叠代码

    焦点在方法的实现体的方法名上,按comman键,则整个函数会被框住.用来标志这个方法的起点和终点
    此时单击,出现菜单

    1506047441856742.png
    在菜单里,有个Fold,可以用来折叠方法,这个折叠现在有个动画效果
    在其它上面点击
    1506047473193118.png
    常用的重构方式都已经集成在这个右键弹出菜单中了,可见,XCode9对于重构的支持度又增加了,以后重构代码将更加方便快捷
    在XCode9之前,在变量或方法上,按CMD+单击,是直接Jump to Definition,但是现在,是弹出这个菜单,对于跳转到变量的定义,就多了一步了,开始可能会觉得不方便
    对于想直接跳转到变量定义,现在是 control+command+单击
    当然,如果你还是觉得以前的cmd+单击 跳转到变量定义,你更习惯,可以在
    1506047607578005.png
    更改为以前那种行为

    关于警告

    我们定义一个不带参数的block,通常是如下的方式

    typedefvoid (^UpdateSwichBtnBlock)();
    

    在xcode9中会提示一个警告

    This block declaration is not a prototype
    
    Insert ‘void'
    

    解决方式可以是如下的几种

    typedefvoid (^UpdateSwichBtnBlock)(void);
    

    但是这样,很多第三方要改,涉及的面太大了,目前可能不太适合,虽然这个是趋势.
    或者,如果只是很少的地方,也可以使用

    #pragma clang diagnostic push
    
    #pragma clang diagnostic ignored "-Wstrict-prototypes"
    
    typedefvoid (^UpdateSwichBtnBlock)();
    
    #pragma clang diagnostic pop
    

    彻底的暂时解决所有这种警告的方式
    在工程的设置中


    1506047796141945.png

    设置为NO,则这些警告就消失了
    不过这不是一种好习惯,只是暂时性的不让提示这种类型的警告而已


    重构相关

    对一个方法或者变量的重命名,在方法上CMD+单击,出现的菜单,选择rename


    1506048006956030.png

    可以看到,它把重命名会出现的改动,都动画折叠起来,让你更有概念,将会影响哪些,更直观!


    cmd +/- 可以用来调整编辑器的字体大小了

    在展示PPT的时候将很有用


    Source Control的极大增强

    1506048020494170.png

    XCode内置的git系统感觉已经很强大了,感觉以后可以抛弃三方的了.
    支持Github账户了
    XCode - Preferences -Accouts 可以登录你的GitHub账户,登录后如下


    1506048043904648.png

    登录后,通过Xcode的菜单
    Source Control 最下方的clone,就可以clone你的github上的工程了,是不是非常方便


    1506048058531217.png
    上面还贴心的提供了搜索框,如果你的github上的工程很多,也是很方便的定位的
    打开任意一个git工程,
    1506048080510267.png
    提供了一列新的 Show the Source COntrol navigator
    这里列出来了你的branch的相关信息,可以很方便的切换分支,等等git操作
    1506048096353937.png

    在右边的编辑框中,可以看到最上面一排
    ALL, Last 24 hours ,Last 7 Days ,Last 30 Days
    ,还有一个Filter过滤框,可以非常方便的用来定位到我们需要寻找的提交记录.
    双击任意一次提交记录,
    可以看到这次的详细更改内容


    1506048123874940.png
    对于我们常用的git的merge tag等,也都内置了强力的支持
    1506048160889750.png
    第三方git客户端如Tower何Source Tree,分分钟要被抛弃的节奏呢.

    新的构建系统

    这个新的构建系统现在还只是Preview,它是纯swift编写的,据说对编译速度的提升帮助很大,不过目前并没有成为默认,苹果说不远的将来将会成为默认的Build .可以参考苹果的官方文档xcode_9.html

    1506048206176401.png
    这里有个 New Build System(Preview)

    crash可以直接在本机上看到了

    当然了,这要用户在机器上允许,还有你提交到appstore时候允许了才会有.


    1506048237529869.png

    runtime问题检测

    在8中,已经包含了Address Scanitizer和Thread Scanitizer,在Xcode9中,又新增了 Undefiner Behavior Scanitizer,它可以实时的检测一系列的问题.不过我们更能明显感受到的是Main Thread Checker,它可以在运行时确保你没有把UI更新 代码写在了非主线程中
    例如,代码中


    1506048625225251.png

    可见还是很强大的,虽然我们没有Fabric的源码,但是其内部调用了[UIApplicationsharedApplication].statusBarOrientation],还是被检测到了
    当然了,如果你想关掉它,可以在 scheme editor中操作


    1506048660434469.png

    模拟器可以多开了,并且,模拟器可以登录

    1506049353869658.png

    不仅如此,现在模拟器也可以登录你的appid了,这样,就很方便的同步联系人等信息到模拟器上了,以前要测试联系人相关的功能,还要自己一个个的新建,现在就方便多了


    1506049410832653.png

    还有,如果开启了Photo的Share,那么模拟器中应该也能同步照片过来了,以前那种一个个的导入图片的方式终于可以说再见的时候了
    模拟器现在可以任意的调整大小了,不得不说这个功能太酷了
    登录appid后,Files就可用了,可以浏览到你的iCloud Drive中的内容了,对于要共享文件到模拟器的需求来说,也变得超级方便
    模拟器的外观样式也回归了,直接是iPhone的外观了,以前可能是因为模拟器不能任意调整大小,所以才没外观的吧
    当然了,你可以去掉外观皮肤. 在模拟器的Window show Device Bezels,去掉选项就和以前一样了


    1506049444615552.png

    无线开发

    这个只支持ios11的机器,很简单,只要在Device那打开支持就行.


    Folder和Group的同步性

    之前,我们在XCode中,更改Folder的名字,在FInder中工程对应的文件夹的名字并不会同步的改变,这会造成我们重命名文件夹变得非常不方便,往往要先在XCode中移除,然后在Finder中重命名,再添加回Xcode
    现在 在Xcode9中重名命Folder,Finder中的也同步的改变了
    我们之前建议一个虚拟的group,并不会在对应的文件夹中建立真实的目录,当然,这可能是你需要的,也可能是你不需要的功能.在9中,默认行为改变了.变成了会建立对应的真实文件夹.如果还想像之前那样只是建立虚拟的group,需要选择New Group without Folder


    1506049901602588.png

    你可能你会担心,区分不了这个group到底是虚拟的,还是实际的
    放心,苹果给出了标识来区分的,虚拟的左下角有个小的三角形


    1506049933727526.png
    当你移动一个Group的时候(虚拟的实际的都一样),它会同步的把对应的真实文件夹也移动到对应的位置,这个极大的方便了我们后期调整工程的目录结构,之前调整那才叫痛苦,在工程中调整了后,工程中的结构和真实的文件夹下的对应不上,以后不会出现这种情况了
    这里发现XCode9的一个文件同步的bug
    如图,我们建立的工程如下
    其中 xuni这个是一个虚拟目录
    1506049973401539.png

    这个时候,如果我们将整个 xuni移动到Views下,


    1506050001814474.png
    可以看到,xcode出问题了,本来我只是将xuni移动到Views下,可现在 真个的View1都移动了,导致SecondView消失了....
    希望苹果在下个版本中能解决这个问题
    其实从上面来看,建立实际目录更不容易出问题,可能这也是苹果将New Group的默认行为改为建立对应的实际文件夹了吧

    调试可以不用USB连接了

    从Xcode9支持无线部署调试来看,千呼万唤的iPhone8支持无线充电几乎是必然。
    下面简单梳理下无线调试的步骤:
    1、第一次部署调试还是需要连线,连接好之后,选择Window->Devices and Simulators,或者直接快捷键shift+command+2;
    2、保证mac与手机在同一个局域网下,在弹出的界面中,勾选connect via network;
    3、勾选好后,耐心等待......
    4、当出现


    image.png

    小球时,说明你的iPhone与Xcode匹配成功,此时,拔掉数据线即可。


    image.png

    Xcode9下相册等访问权限问题

    苹果对相册的权限key做了调整,原来的 NSPhotoLibraryUsageDescription](https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW17) ,在iOS11之后,改成了NSPhotoLibraryAddUsageDescription


    不常用的更新

    Server & Bots
    现在XCode内置了一个XCode Serever用于 持续集成,因为很少用到,也就不展开了


    1506050035452812.png

    相关文章

      网友评论

          本文标题:IOS-XCode9的新变化

          本文链接:https://www.haomeiwen.com/subject/dtfqextx.html