iOS各类调节技巧豪华套餐

转自:http://www.cnblogs.com/daiweilai/p/4421340.html 侵删

目录  

前言
逼优鸡
知己知彼
长驱直入

抽刀断Bug
  普通操作
  全局断点(Global
BreakPoint)

  标准断点(Condational
Breakpoints)

打印的法子
  NSLog
  翻开僵尸对象(Enable NSZombie
Objects)

出击的码农
  Console(lldb
命令)

  Profile(instruments)
  Xcode视图调试
结语

前言

近些年博主临近结束学业季,为了完善的写一篇结业杂文,真是:“锄禾日当午,汗滴禾下土”<——
那句诗跟毕业我写结业杂文没其余一毛钱关系,我就是出人意表想吟湿了。不过博主作为互联网工程专业的好青年,曾经的心愿和非凡就是在排水沟干出一番堂堂的大事业,没错是就是下水道,大家的征程在排水沟!!不过大家别误会,我不是忍者龟的脑残粉!听我一而再说!我想的是等自身在各大排水系统各大下水道功成名就的时候,我就足以指着一个井盖对自我的外甥说:“诺
那多少个上边的通讯光缆是伯公我接的!!”
我脸部自豪地承受着那儿子的景仰!可是啊,曾经的意愿都落成持续了,我深深爱着的私自通讯光缆啊,曾经多少个夜晚眼泪打湿了我的毕业杂文,渲染开的笔墨那都是哥逝去的年青啊。

因为生活如同开了博主一个噱头,让博主境遇了一种鸡,那是一种非常类其余鸡,它称为逼优鸡!!就是那只鸡让博主不可捉摸的成了一只APM超200的野生究极程序猿!!吼~
嗷~,把博主带离了下水道!并且与那只鸡踏上另一端征途!临走的时候,下水道的通信光缆就付给你们了,肥皂基友们(互连网工程的基友们)!!我靠,他们甚至在打印店花了50块钱就一直买了一套深度豪华结束学业小说套餐!里面包括了舆论,工程制图,CAD,报价清单,拓扑结构……最要害的是业主承诺不需任何改动,直接可以通过毕业答辩,不通过来年免费再提供一套散文,最接近的是竟然襄助通过再付款!!,
图1

图片 1

老子写诗歌写了半个月像狗一样,他们甚至直接就买了!就这么买过去了!!对得起教授的谆谆指导、自己的难为付出和严父慈母的期待么?我就问你们惭愧不惭愧?为何买的时候不喊上本身?泪已淌干~

扯蛋过多简单肾亏

 

逼优鸡

到底来临了大家期待的正片,前几天我就要和我们讲自己和逼优鸡的故事,逼优鸡它优雅低调,它身材玲珑,藏匿在乌黑处,挑动着自身的私欲!曾四个昼夜博主都……(擦!尼玛,逼优鸡是何等鬼?说好的技艺小说?)同学你实在(biè)急,你先坐下,先把鞋子穿好!我说的逼优鸡它的英文名叫做(Bug),它挺(T)美(M)的(D)……
歌仔唱的好:
稍加猿曾被它夺走年轻的容貌
稍许猿曾在它后边亮门秃了头
些微Bug曾经生命中来了又还
可以终生有你我都陪在你身边
图2

图片 2

洋洋个夜晚您揪着头发和Bug撕咬的风貌博主可以体会,所以本次的那篇作品博主就要给大家整理一个调教iOS逼优鸡的章程豪华套餐!!放心!相对的深浅豪华,因为早已投入肯德基豪华午餐~咳咳~其实是因为逼优鸡(Bug)对于大家毕竟是除了太太之外第二吓人的存在!我们无法不要练就铜头铁臂十八般武艺先生,祭练奇门巧技各样大杀!方可与之相持并将之歼灭!好!跟着博主一起装逼一起飞吧!!!!

第一步:
自家看我们不顾外表的就清楚大家刚刚也才debug回来 ,我们就先写个hello
world压压惊把!
第二步
……

 

知己知彼 长驱直入

此地为大气Copy!不喜请喷!

The software doesn’t do something that the product specification says
it should do.
The software does something that the product specification says it
shouldn’t do.
The software does something that the product specification doesn’t
mention.
The software doesn’t do something that the product specification
doesn’t mention but should.
The software is difficult to understand, hard to use, slow, or in the
software tester’s eyes will be viewed by the end user as just plain
not right.

本身不是英文老师,请我们自行切换多语言阅读形式。
也还有有人强行的定义
”Bug就是张冠李戴“,除了世界上首先只Bug是飞进去的那只昆虫外,其余Bug毋庸置疑那都是程序员们自己生下来的!程序员们融洽犯的一无所长!假如说一个软件文章(请尊重您自己的文章,不要喊他们”产品”或者”项目”)是程序员们自己的儿女,那么Bug就是这么些孩子的生的病,有病得治,药不可以停!生病有种种医疗方法,物疗,理疗,化疗,心情疗……那么“治疗”Bug也是有多中方法的!下边博主会一一列举!惩治这几个个Bug以前,博紧要先阿拉巴拉一番,遭受Bug也是一件相比哔了狗了的业务,你要了解任哪个人都会患有,没有例外!所有其余代码都有Bug那是定理,大家首先要从心态上端正Bug那件业务,咱们得以知晓为遗憾也是一种美,如同阿雨说的“没有皱纹的太婆是唬人的,没有白发的老头是令人不满的。没有废墟的人生太累了,没有废墟的稠人广众太挤了,掩盖废墟的举措太伪诈了。”Debug是为了求证程序有错,而不是注解程序无不当;所以大家要成功临Bug而不惧者,圣人之勇也!所以大家要水到渠成战略上藐视它,战术上讲究它!你要思想默念Bug其实挺(T)美(M)的(D)!anyway
无Bug不生活!!

 

抽刀断Bug

断点,(我求你们不要想到张敬轩,阿轩他简单么,小受又怎么了?你们那帮人当成的!!),我要说的断点是BreakPoint!基本上不是残缺的IDE都怀有断点调试效能吗!尤其是XCode,大家家的IDE断点调试作用然则强中又是强中手!在那前边我们可以先了然一下哈子是断点?它怎么落到实处的?工作规律如何的?博主就献丑说说自己的了解啊,断点,顾名思义就是过去有一个点,后来它断了,谢谢,我的故事讲完了。哎哟还不服,那些基础常识的东西自己不会查?你还当真脸皮厚上天了去了,还要博主给你查哟,自己查去!

一般而言操作

如图3

图片 3

主导的断点操作如下

图4

 图片 4

点击那一个黑列列就创建了一个断点,再一次点击就临时废除这几个断点(可是不删除),长按那些断点拖出去就删除了(mac
os的系统工程师就是米粥拖动的快感),当然也足以右键那一个创制的断点,会弹出相应地菜单。
本来也仍能监视某个变量!
图5

图片 5

在目的视图中,右键某个对象,点击“沃特ch ‘XXX’”就完事XXX对象的监视了。

这边自己监视了lab那一个UILabel的变量,每当这些变量举行翻新它的音信就会被打印到控制台。
行吗!我们最焦点的创办断点的干活早已学会了,Xcode舒服在怎么样地点吧?就是不分Debug情势和Run方式的,可以说是无缝切换的,你就算没有创造断点,那么就是Run的常规情势,假如创立了断点并且运行到断点处,就自行进入Debug情势咯,不像某EC早先的IDE,控制面板就如开飞机的同样,几万个按钮以为很有力,其实只用了Run和Stop,还有何样Debug格局,App格局……,果然Xcode的优越感在相比中尤为肯定了,舒服到极点呀,如同夏天的海风拂过菊花,嗯是的
就是那种感觉!
咱俩创造好了断点,运行到断点就机关停下来了,像这样:
图6

图片 6

这几个Debug的最基本操作技能是每一个入门的iOS开发者都要了然的,应该当成一种本能,就像是狗爱吃翔一样(噢
对不起
博主不是歧视狗的趣味,博主也养过狗,很二逼不过没有吃翔!真的据我所知它平昔不吃翔的,那里只是比喻只是比喻)。

 

大局断点(Global BreakPoint)

偶尔在先后出错的时候不可能能精确定位到奔溃的那一行代码,而是一贯跑到main循环或者Appdelegate里面,
或者会给你这么的指示:

EXEC_BAD_ACCESS:

是否有种想哭的扼腕?尼玛~至少给我有的仓房音讯可以啊~……那一个时候你相对不要砸鼠标和键盘哦,一切都是主机在运作,你砸鼠标和键盘有啥样用啊?应该是踢主机呀~~,现在有了全局断点,娘亲再也不担心您砸鼠标了,你只必要如此:
图7

图片 7

在Debug导航面板进行上图的操作,你就建立了大局断点,那样一旦碰着错误,debug程序就会自行定位到栈底的新闻,也就是您首先出错的代码的那一行,那样你就可以快意的debug拉~~

 

规范断点(Condational Breakpoints)

之前有一个娱乐,叫做撸啊撸,有些玩家他们掌握怎么操作,会放技能会走路,可是他们不明了买装备,玩了一局下来,鞋子小刀都未曾买。我干吗讲那几个故事吧?因为众多女孩儿学东西和玩游戏一样,看完前面的二种调试技能,就认为自己已经屌爆无敌了,其实她们但是是出门不带装备的玩家,假若只是利用了上述的调试技能只好算得低玩,在伟大的逼优鸡面前根本就是会被弹指秒的那种,所以学会装备自己才是王道!条件断点,就是学谋面兔放鹰!

我们来看一段代码
图8

图片 8

你是还是不是想问博主为啥那么妖媚,竟然上了斯威夫特了!!我此刻只想吟一首湿:别人笑我太好色,我家住在真武阁。
左右那么些年份大家都是吃饱了撑着的,博主也是,所以就学习Swift咯。
咱俩即使在一个巡回之中使用了断点,要是那一个轮回执行了100万次,这你的断点要实施那么多次,你不觉得蛋蛋都凉了的忧伤么?所以大家那样做:
图9

图片 9

如此只有遍历到c==“H”的时候 断点才会被触发。

图10

图片 10

是否很棒呢!
些微童鞋的钛合金狗眼已经看到了编制断点那里有一个Action的东西,那是何等呢?
本条是分外强大的,可以在你断点的地点,执行各类操作,比如执行脚本命令,控制台命令(能够制定调试信息自定义保存)、打印新闻等,
博主最欣赏的就是以此Log
message啦,不难残暴!根本就不须要print啊NSLog嘛,间接在断点的Action打印就好了(其实那么些是Xcode和调试器结合的高能产物,下边再介绍)。具体能够那样:
图11

图片 11

其实刚刚博主撒谎了,博主最喜爱的Action并不是Log
Message,而是Sound,顾名思义嘛,断点射在Bug上,那样遭逢断点就会发出声音,听到自己要好安装的声息,我就清楚是怎么Bug了,听声识Bug,呵呵,EXEC_BAD_ACCESS的一无所能我设置成了波多野先生的声息,unrecognized
selector send to instancd的错误我设置成了苍井空的……
不要问我系统怎么没有广濑奈央美的声音,我历来就不知底哪个人是三津夏美。

当然还有更为强大的基准断点就是那货啦
图12

图片 12

增进之后在 Symbol 一栏输入 viewDidLoad。
这样一来,在程序中享有的 viewDidLoad 方法被调用时都会触发断点。
图13

图片 13
自然,大家也可以唯有为特定的某部类的办法添加断点。在 Symbol 一栏输入
[ClassName viewDidLoad] (Objective-C) 或 ClassName.viewDidLoad (Swift)
即可。
比如说:unrecognized selector sent to instance 0xaxxxx
那种不当,这几个instance能够这么飞速稳定
图14

图片 14

 

 

打印的措施

即便ARC已经让内存管理变得不难、省时和快速,可是在object的life-cycles中跟踪一些根本事件如故相当关键。毕竟ARC并从未完全铲除内存走漏的可能,或者总结访问一个被release的目标。为了那一个目标,我们得以很艺术地窥见对象正在做些什么,想想就好有快感。

NSLog

小伙伴们率先节课学习ViewController的生命周期的时候,老师肯定很低俗的教了豪门,在viewController的各类生命周期的措施中动用了NSLog来窥探!没错,那样事实上就是最简易爆炸的跟踪生命周期的不二法门了,但是系统协调的NSLog真心有点羸弱,输出的新闻太少,根本就不可以知足大家的欲望,那里自己教我们加深你的Log!!
可以用上边的那段宏

//A better version of NSLog
#define NSLog(format, ...) do { \
fprintf(stderr, "<%s : %d> %s\n", \
[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], \
__LINE__, __func__); \
(NSLog)((format), ##__VA_ARGS__); \
fprintf(stderr, "-------\n"); \
} while (0)

 

有关宏的威力 大家可以乱入自己的博文
iOS中的预编译指令的发端探索》

那般打印出来的东西才像话嘛(其实NSLog的打印是老大低效的,甚至比print低100倍,感兴趣自己翻翻苹果手册咯)。 
使用objc语言(强类型)并且用NSLog打印的时候,平常搞不清楚NSLog(@“%?”,xxx)
xxx那种类型该是什么什么样品种输出,应该是%d呢依然%@亦或者%f???傻傻分不清楚~,所以玩转NSLog你应当要了然以下那个全局方法!
图17

图片 15

拉开僵尸对象(Enable NSZombie Objects)

Xcode可以把那一个早已release掉得对象,变成“僵尸”,当我们走访一个Zombie对象时,Xcode可以告诉大家正在访问的靶子是一个不应有留存的对象了。因为Xcode知道那些目的是何许,所以可以让大家领略这一个目的在什么地方,以及那是如曾几何时候发出的。
故此Zombies是您的好基友!他可以让你输出的新闻更具体!!
现实那样做:
图15

图片 16
温馨再试试输出Object的音信咯,是或不是很棒呢?
僵尸只能用在模拟器和OC语言哦~

 

进攻的码农

即使说你早已把打印的点子运用的风生水起了,并且断点的使用可以随手拈来随便,那么您曾经在与逼优鸡的对垒中,稳操大多数胜券了,你早已是一个骄傲冷艳的程序员了,俯视一切低能的逼优鸡了!可是!面对更强有力的仇敌——你那秃顶1000°近视牙齿夹着韭菜的有着十年对阵逼优鸡的同事面前、以及笑里藏刀眼睛有眼屎可是能用眼神杀死你的面试官……
对于他们,你要么太弱,你的技能的锻炼还太少!所以你必要求攻击!!比逼优鸡还要强大的大敌出现了!大家须要更强劲的武器。

Console(lldb 命令)

大家的靶子是要配备到鼻毛!console窗口我们清楚就是哪位黑乎乎好多字会滚出来,更加是被逼优鸡干到的时候,那么同学们有没有相逢那种console呢
图16

图片 17
咱俩家的编译器历史
敬请乱入 《iOS中的预编译指令的开端探索》 ,没错大家现在正值利用着世界上最好的c、c++、oc、swift的编译器——LLVM,lldb就是那一个世界上最好的LLVM的调试器!不要害羞,因为大家是最精粹的!所以必然要用最好的!千万别客气哟,随便用,就好像自己家相同啊,啊
哈哈 吃吃吃
别只顾着吃饭,多夹菜……哎~博主好客的职业病又犯了~,什么?你不晓得在何地用lldb?
先是!你得先crash或者把程序断下来!直到你见到图16的(lldb)字样出现,你就足以敲命令了~~
历次你想查看变量,常量,你要重新写NSLog去打印,然后再一次编译,去实施,重头开头?太累了,有了lldb你只要这么
图18

图片 18

是还是不是便于到爆炸?
当您有一个switch语句,你为了测试每一个case,你都要制作假条件去测试;有一个if…else…语句,你为了测试分裂的气象,你要硬编码写了分歧的图景,编译好四次为了测试每种情况……,我想你应该明白为啥自己的头发那么稀疏了。
以上的那么些处境,只需五次编译,使用lldb的thread命令,伪造重临值,欺骗寄存器,就可以自由的做完所有测试了。
是否牛逼到爆炸?
lldb真的很有力,博主没有骗你,这篇博文到此的装有调试技巧lldb都足以兑现,各样断点,种种打印,调用python插件,运行中断,操作硬件底层,控制程序运行线程……lldb都可以做到!就像是lldb就是另一个有力的社会风气!!!
是还是不是强有力到爆炸?
实际上只要您不想贪多嚼不烂的话,你一旦精通那一个调试工具,基本前边的调剂技能你可以不用学了,在那边博主也是不才,lldb的强有力不是博主随便说几句就足以发布的出来的, 
更多地索要大家事必躬亲,才能真正体味到那种美好,那种笑容可掬无比的调剂体验!
此间博主无私地掏出任意门,那里有很好的稿子!可以让您良好的体味,呵呵
《The LLDB Debugger》
《About LLDB and
Xcode》

《LLDB调试命令初探》
《与调试器共舞 – LLDB 的华尔兹》

 

Profile(instruments)

 

图19

图片 19
以此事物怎么翻译啊?大家就叫检查器吧!!也许已经学习了iOS开发大多年的你,一直都没在意到或者利用这些工具,但是博主很负总责的报告您现在市面上任何一款可以的APP都会利用instruments来让代码越发健全!难道instrument是春药?怎么会使代码健壮呢?
那几个敦实不是那多少个健壮~哎~~ 我才18岁能或不能够清纯一点哟

instrument里面包涵了诸多工具,内存溢出分析,品质分析,各个分析……
若是细说的话,这么些实在可以为每个工具开一篇博客,不过博主是一个领略授人以鱼不如授人以渔的道理的老司机!所以博主当然不会整整说三回!大家就来领着大家看看专用debug的内存溢出分析工具的施用呢!
图20

图片 20
在使用leaks从前我们可以试行这几个“Analyze”
图21

图片 21
analyze能够火速的发现你的代码中release的难点,以及继续进程中的父类方法缺失等等难题!一般一个可观的iOS开发工程师No
Warning、Pass
Analyze是最基本的品德!我晓得你已经对此你自己的花色的好多个warning已经麻木了,但博主本人管事人地告诉您,那样不好!,因为有一首吉林歌谣《老车手带带我》听得博主神清气爽!

听从作为iOS开发者的贞操!跟着自己大喊口号!

No Warning!Pass Analyze!

俺们继承回来使用leaks!借使analyze都通过了,那么就可以运用leaks工具,发现千年老妖级其他侧漏了!
图22

图片 22
比方提醒某一个目的有侧漏的高危机,你还足以这么弹出侧边的拓展细节
图23

图片 23
平素点击方法就足以向来进去代码部分了!!
是否很粗略凶残呢!当然还广大别样工具,不过叫做篇幅的事物总是限制人,诶
真蛋疼~真的还想多说点的 
想要越多询问instrument 大家可以看看那篇作品!
《How to Use Instruments in
Xcode》

 

Xcode视图调试

偶尔有些逼优鸡隐藏的相比较深,代码大概都翻了个遍,照旧没找到题目出在哪,博主可以驾驭那种风中混杂,蛋碎一地的赶脚,因为许两个日夜博主就是深陷当中无法自拔,后来大概直接重新新建一个工程!照旧那几个!!我去,直到有一天博主中午起来,看到镜子中协调帅气的面颊,我才赫然醒来,原来长得帅可以那样很快的找到bug!最后锁定是可爱又可恨的xib和storyboard出了难题!!某个constraint或者view的嵌套逻辑又或者社团合营Git冲突等等难题,导致io
-v什么的失实,那种景观去检查视图文件,可能xcode崩溃打不开那么些xib或者storyboard,你间接行使文本工具打开这几个xml类型的标记文件,你差一些吐血,几万行的记录狗眼都看瞎了……。

唯独这几个历史要被终结!!因为我们强大的xcode的视图调试作用!!

以下内容,完全copy,如有不适,百折不回放完!请叫自己春风得意的搬运工!
抄袭自《View Debugging in Xcode
6》

苹果在Xcode
6中做了不可胜举分明的校对和优化,视图调试就是内部之一。平日,App用户界面的行事不会符合开发者期望的那么,比如或者不突显视图,或者没有正确地出示。本文讲解如何选择Xcode的新的视图调试功效来简化开发者对难题界面的认可和修补。

1.Demo 工程

初叶之初先从github(https://github.com/tutsplus/ViewDebugging)上下载示例工程并打开ViewDebugging.xcodeproj。该工程包含一个简单的包含少数视图控制器的可点击的应用程序、应用程序委托以及一个storyboard。该app是为iPhone而设计,但受益于iOS
8的自适应布局,所以界面突显在其余设施上都未曾难点。

您刚刚下载的应用程序示例工程是一个大约的to-do
list应用程序,包蕴可查阅其余新闻的大致显示屏,比如该示例工程中的项目数,用户头像以及@***的推特操作。点击Xcode左上角的运转按钮将显得在iOS模拟器中运作的应用程序。
图24

图片 24
神速会小心到用户界面中留存难点-表视图中没有出示任何数据。在工程导航面板中开拓FirstViewController.swift并找到以下代码:

var mockNotesDataSource: [String] = ["Do some laundry", "Finish homework", "Walk the dog", "Learn about view debugging"]
{
didSet
{
self.tableView.reloadData()
}
}

 

可以见到mockNotesDataSource变量是表视图的数据源。使用斯维夫特的性质观望者效用,在数据源暴发改变时,表视图会自动重新加载。通过查看以上代码片段,你会意识应该选用中应有有4个门类必要出示,但近来不显得数据就证实一些地方出现了偏差。

启用视图调试

题材似乎与用户界面有关。运行app进度中,按下底部的Debug View Hierarchy
按钮,或者从菜单中接纳Debug > View Debugging > Capture View
Hierarchy 来启动视图调试。

图25

图片 25
开行视图调试后,Xcode会对应用程序的视图层次拍一个快照并出示三维原型视图来商讨用户界面的层级。该三维视图除了显示app的视图层次外,还显得每个视图的岗位、顺序和视图尺寸,以及视图间的交互形式。

以身作则工程在Xcode中的三维视图体现正常,但表视图单元格就像有点太宽了。
图26

图片 26
停顿应用程序调试并在右侧选中Main.Storyboard来修复难题。点击表视图并选中Editor
> Resolve Auto Layout Issues > Reset to Suggested Constraints.
图27

图片 27
编译并再次运行应用程序以确定用户界面显示正常。点击Debug View
Hierarchy按钮更进一步精晓视图调试的功力。

视图调试功效

点击并拖拽三维渲染图的随意一边,可旋转或者倾斜用户界面,向左或者向右倾斜可选中某个表视图。

入选后,Xcode会高亮该视图,并在会在右手体现Object
和Size检查器。查看在跳转栏顶部并肯定UITableView是右手最终一个门类。
图28

图片 28

Object 和
Size检查器包含大气灵光的音讯。过去开发者需求借助日志语句或者断点来检查视图的安顿。

开辟右侧的Size inspector(规格检查器),下方是Auto
Layout,可以看来视图上业已选用了合情合理的自律。在Object
inspector中,我们得以检查所选视图的品质。
图29

图片 29

在Xcode的调试区有9个视图调试进程中要用到的按钮和滑块儿。
图30

图片 30
从左到右控件排序:

调动视图间距:调整不一样视图间的间距。

呈现被分开的内容:当前来得视图中被划分的一部分。

来得约束:浮现选中视图的自律。

重置查看区域:将3D渲染透视图復苏至默许状态。

调动查看方式:接纳性地突显3D渲染透视图,比如仅体现内容,仅显示框架以及同时出示内容和框架。

减弱:缩短3D渲染透视图

卷土重来:将3D渲染透视图苏醒至默许尺寸。

放手:放大3D渲染透视图

调整可视视图范围:隐藏视图或显示视图,一步步剖析3D渲染视图,向左或者向右滑动滑块儿有相反的法力。

提议花一点刻钟上手操作下那个空间,并领悟各自的用处。

视图层排序

再也编译和周转应用程序,并点击用户界面尾部的”More”标签。第一立时去界面看起来还OK,然而它从不根据开发者的定义准确执行,图片上的歪曲效果没有出示出来。大家得以由此调节视图层次来更好地规定难点所在。

向左或者向右拖拽视图来查阅具体景况,接着将view spacing
slider向右拖动。
图31

图片 31
那样一来,不一致视图间的距离变大了,层次也尤为清楚,大家来看在图片”下方”还隐藏着另一个视图,选中隐藏的视图,它就是”丢失”的视觉效果视图。
图32

图片 32
开拓Main.storyboard 并当选Second View Controller
Scene。在左手的文档概览面板中,展开Second View
Controller的视图对象以查看子视图的排序。

Xcode在文档概览中按照进步顺序堆叠视图,换句话说,列表顶层的视图是视图层次的功底。

修复难题很粗略。运行时,Blur Effect View隐藏在Sky
Image之下,因为它是视图层次的率先个视图。在文档概览中点击并拖拽 Blur
Effect View,结果会如下图突显一样:
图33

图片 33
再一次运行应用程序就能收看模糊效果了。应用程序的用户界面看起来符合规划的初衷。大家还能查看iOS模拟器的别样调试功用,看看还全面了此外什么地方或效益。

5.iOS模拟器调试功用

编译并运行应用程序,选中模拟器,从 Debug菜单中采纳Color Blended
Layers选项。
图34

图片 34
接下来会看出app的用户界面被青色和黄色覆盖,显示了什么样图层可以被增大覆盖,以及怎么着图层是晶莹的。混合层属于总计密集型视图,所以推举尽可能地运用不透明的图层。
图35

图片 35
苹果在其文档(iOS Simulator User
Guide)中对此展开了申明,并在表视图处理上应用了不透明图层。滚动视图时会有些表现不大好的地点,一个第一的缘由就是运用了混合图层,而一旦情节背景是不透明层,那么页面滚动效应就会至极流畅和安乐。

对此那款应用程序来说,借使用户有数百个连串要来得,可能会现出滚动质量不雷同的情况。表视图单元格当前采纳的是混合层。由于视图控制器的视图背景是反革命,所以无论是表视图单元格使用的是混合层或者不透明层,终端用户不会发觉到有哪些不平等。

开辟Main.storyboard并当选To Do list
Scene中的表视图单元格属性。在性质检查器(Attributes
Inspector)中,向下滚动Drawing分区并勾选Opaque。
图36

图片 36
在启用Color Blended
Layers的情事下编译并运行应用程序。由于表视图单元格现在应用了不透明层,所以会用蓝色覆盖,以提示它们是不透明的。

除此之外标记图层外,还有其余部分可行的效应可帮开发者在iOS模拟器中调剂应用。以下是中间有些比较实惠的:

Toggle Slow Animations in Frontmost App:
选中模拟器,打开Debug菜单选中Toggle Slow Animations in Frontmost
App,该意义可以下跌app中卡通的运行速度,适合调试包罗复杂动画的应用程序。也可是使用急迅键Command-T来操作。
Color Copied Images:该选项可以给绘制时被Core
Animation复制的图片添加蓝粉色叠加层。
Color Misaligned
Images:若是图片边界没有与目标像素完美对齐,该成效可为图片叠加上一层品粉红色。如果图片应用规定的比重大小绘制,那么该功效会为图片添加一层灰色叠加。
Color Off Screen Rendered:.该采取为离屏渲染内容添加一个艳情的叠加层。
成百上千开发者会忽视接入电话时选用状态栏的安顿难题,你可以因此接触通话中状态栏来概括测试。在iOS模拟器中,从Hardware菜单中当选Toggle
In-Call Status Bar。

想查看app怎样响应事件,可按下Command-T来启用slow
animations,并按下Command-Y来显示电话对接时的状态栏。假设你的应用程序使用了导航栏,那么操作系统会为你兼顾到这一块。
图37

图片 37
除此之外给视图着色外,还要记住iOS模拟器也足以调节Core
Location难点。你可以在特定经纬度模拟设施,

一经你的应用程序使用iCloud来治本数据,你也可以手动触发同步事件。

本文中动用的demo
app卓殊简单,使用文中提到的技术可以帮你在以后节约不可胜数时光。视图调试可以帮您纠正很多用户界面中出现的难题。

除外Xcode和InterfaceBuilder之外,使用iOS模拟器的调剂效用可以进步利用品质和辨识开发进度中的瓶颈。苹果的人机交互指南(中文版
英文版)强调了积极响应对app的第一,能让用户觉得使用易于使用和操作。苹果对InterfaceBuilder的升迁让视图调试变得前所未有的简要。

结语

那篇小说博主花了3个礼拜,断断续续才写完的,当中错漏应该越发多,不过无论如何鄙人觉得应该算是配的上豪华套餐的称号了,当中iOS开发的主导、常用以及高阶的调试技能都涉及了,不过照旧有诸多其他的奇门巧技没有介绍到,首如若讨厌的“篇幅”限制住了博主广博的爱,不过无论怎样,那篇小说大家暂且可以当做是一个调节技术的目录,因为博主在此间写的讲的很浅显,你不该只满意于那篇小说,你假诺想要改变世界来说,你应该借着博主的那篇目录式小说深切地学习与啄磨!

理所当然还有Crash的日志、测试工程、以及强大牛逼哄哄的第三方调试库等那篇博客没有涉及到,那是一个缺憾,可是自己信任聪明的你会去谷歌(Google)一番的!

还有大家与逼优鸡的故事才刚刚初叶。

 

相关文章