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

于目标视图中,右键某个对象,点击“Watch ‘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了!!我这儿只有想吟一篇湿:别人笑我无比好色,我家住在黄鹤楼。
左右是年份大家都是吃饱了支撑在的,博主也是,所以就算上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变量是表视图的数据源。使用Swift的性能观察者功能,在数据源发生变动时,表视图会自动重新加载。通过翻看以上代码有,你会发觉应该使中当生出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一番底!

还有我们跟薄优鸡的故事才刚刚开始。

 

相关文章