ACCESSiOS各种调节技巧豪华套餐

转自: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

ACCESS 1

父亲写论文写了一半独月像狗一样,他们竟然直接就是市了!就这样买过去了!!对得自教师的谆谆教导、自己之难为付出与老人的期待么?我就算问你们惭愧不耻?为什么请的时段不喊上本身?泪已淌干~

扯蛋过多爱肾亏

 

逼优鸡

竟来到了豪门期待的正片,今天我就要与大家提自己跟临界优鸡的故事,逼优鸡它优雅低调,它身材玲珑,藏匿在黑暗处,挑动着自之欲念!曾多独昼夜博主都……(擦!尼玛,逼优鸡是什么不好?说好的艺文章?)同学公实在(biè)急,你先坐,先管鞋子穿好!我说之逼优鸡它的英文称做(Bug),它可怜(T)美(M)的(D)……
歌唱仔唱的好:
有些猿曾被它们夺走年轻的面目
稍猿曾于她面前亮门秃了腔
粗Bug曾经生命被来了还要还
能一生有您我还伴随在公身边
图2

ACCESS 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

ACCESS 3

中心的断点操作如下

图4

 ACCESS 4

点击那个黑列列就创办了一个断点,再次点击即即撤这断点(但是非删),长论老断点拖出去就去了(mac
os的系统工程师就是稀饭拖动的快感),当然也可右键那个创建的断点,会弹有相应地菜单。
本来也还可以监视某个变量!
图5

ACCESS 5

当目标视图中,右键某个对象,点击“Watch ‘XXX’”就成功XXX对象的监视了。

这边自己监视了lab这个UILabel的变量,每当这个变量进行更新她的信就是会见吃打印至控制台。
好吧!我们最中心的缔造断点的做事曾学会了,Xcode舒服在什么地方吧?就是未分Debug模式以及Run模式的,可以说凡是无缝切换的,你要是没有创造断点,那么即使是Run的正常模式,如果创建了断点并且运行及断点处,就机关进入Debug模式了,不像某EC开头的IDE,控制面板就如开飞机的一模一样,几万个按钮以为生强大,其实只是所以了Run和Stop,还有呀Debug模式,App模式……,果然Xcode的优越感在对照中更为分明了,舒服到无限点呀,就像夏日的海风吹拂过菊花,嗯是的
就是那种痛感!
咱创建好了断点,运行至断点就活动停止下来了,像这么:
图6

ACCESS 6

这些Debug的极其基本操作技能是各国一个入门的iOS开发者都如掌握的,应该算平栽本能,就比如狗爱吃翔一样(噢
对不起
博主不是歧视狗的意思,博主也留下了狗,很二逼但是并未吃翔!真的据我所知它从来不吃翔的,这里只有是况只是况)。

 

全局断点(Global BreakPoint)

有时在程序出错的时光不克能纯粹定位到奔溃的那一行代码,而是一直走至main循环或者Appdelegate里面,
或者会受您这么的提示:

EXEC_BAD_ACCESS:

凡是无是生种植想哭的兴奋?尼玛~至少吃本人有库房信息可呀~……这个时刻你绝对不要砸鼠标和键盘哦,一切都是主机在运转,你砸鼠标和键盘有什么用也?应该是踢主机呀~~,现在产生矣大局断点,娘亲再为不担心您没戏鼠标了,你才需要这么:
图7

ACCESS 7

当Debug导航面板进行上图的操作,你虽确立了大局断点,这样只要碰到错误,debug程序就会见活动定位及栈底的音,也尽管是若长出错的代码的那一行,这样您就可快的debug拉~~

 

标准化断点(Condational Breakpoints)

以往发生一个游玩,叫做撸啊撸,有些玩家他们知道怎么操作,会放技能会走路,但是她们无亮买装备,玩了平等店铺下来,鞋子小刀片都无打。我干吗说这个故事啊?因为过剩小学东西同玩游戏一样,看了前面的几栽调试技能,就认为自己就屌爆无敌了,其实她们可是大凡飞往不带来装备的玩家,如果只是用了上述之调节技能只能算得低玩,在伟大的侵优鸡面前根本就是会于瞬秒的那种,所以学会装备自己才是王道!条件断点,就是学会有的放矢!

俺们来拘禁同样段代码
图8

ACCESS 8

公是休是怀念问问博主为何那么妖媚,竟然高达了Swift了!!我这儿止想吟一篇湿:别人笑我无比好色,我家住在黄鹤楼。
反正这年代大家还是藉饱了支撑在的,博主也是,所以便上Swift咯。
俺们只要以一个循环里用了断点,如果这轮回执行了100万次于,那尔的断点要履行那累,你莫看蛋蛋都凉了之悄然伤么?所以我们如此做:
图9

ACCESS 9

如此只发生遍历到c==“H”的时节 断点才会受硌。

图10

ACCESS 10

是勿是怪过硬呢!
粗童鞋的钛合金狗眼已经看到了编制断点那里发生一个Action的事物,那是啊呢?
这个是异常强大的,可以在您断点的位置,执行各种操作,比如执行下论命令,控制高命令(可以制定调试信息自定义保存)、打印信息等,
博主太欢喜的虽是这Log
message啦,简单粗暴!根本就未待print啊NSLog嘛,直接当断点的Action打印就吓了(其实是是Xcode和调试器结合的高能产物,下面再介绍)。具体可这么:
图11

ACCESS 11

实在刚刚博主撒谎了,博主太欣赏的Action并无是Log
Message,而是Sound,顾名思义嘛,断点射在Bug上,这样遇到断点就会发出声音,听到自己自己设置的响声,我就算明白凡是啊Bug了,听声识Bug,呵呵,EXEC_BAD_ACCESS的荒谬我设置成了波多野先生的鸣响,unrecognized
selector send to instancd的缪我设置成了苍老师的……
不要问我系统怎么没有吉泽明步的音响,我历来就是不掌握哪个是吉泽明步。

本来还有更强劲的格断点就是当下卖啦
图12

ACCESS 12

累加后以 Symbol 一牢输入 viewDidLoad。
这样一来,在次中享有的 viewDidLoad 方法让调用时还见面硌发断点。
图13

ACCESS 13
理所当然,我们为可以单独为特定的某类的计上加断点。在 Symbol 一栏输入
[ClassName viewDidLoad] (Objective-C) 或 ClassName.viewDidLoad (Swift)
即可。
按:unrecognized selector sent to instance 0xaxxxx
这种不当,这个instance可以这么快速稳定
图14

ACCESS 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

ACCESS 15

敞开僵尸对象(Enable NSZombie Objects)

Xcode可以管那些曾release掉得对象,变成“僵尸”,当我们走访一个Zombie对象时,Xcode可以告知我们正在访问的对象是一个请勿应当在的目标了。因为Xcode知道此目标是什么,所以可以给我们明白之目标在何,以及这是呀时发的。
因此Zombies是若的好基友!他好于您输出的信息再有血有肉!!
实际这样做:
图15

ACCESS 16
协调又尝试输出Object的信息咯,是匪是怪硬呢?
僵尸只能用当模拟器和OC语言哦~

 

攻的码农

倘若说若都拿打印的道以的风生水起了,并且断点的运可随手拈来随便,那么你早已于同薄优鸡的对垒中,稳操大部分胜券了,你曾是一个傲然冷艳的程序员了,俯视一切低能的压优鸡了!但是!面对再强劲的仇人——你那么秃顶1000°近视牙齿夹着韭菜的起正在十年对战逼优鸡的同事面前、以及笑里藏刀眼睛有眼屎但是会就此眼神杀死你的面试官……
对于他们,你还是最死,你的技能的千锤百炼还极少!所以你得使攻击!!比逼优鸡还要强大的仇出现了!我们用再强大的兵。

Console(lldb 命令)

俺们的对象是如配备到鼻毛!console窗口大家明白就是何许人也黑乎乎好多字会滚下,尤其是给压优鸡干到之上,那么同学等有无产生碰到这种console呢
图16

ACCESS 17
咱俩下之编译器历史
敬请乱入 《iOS中之预编译指令的启幕探索》 ,没错我们现着用在世界上极好之c、c++、oc、swift的编译器——LLVM,lldb就是者世界上极其好之LLVM的调试器!不要害羞,因为咱们是不过帅的!所以一定使用最为好的!千万别谦虚哟,随便用,就如自己小一致啊,啊
哈哈 吃吃吃
别只顾着用,多夹菜……哎~博主好客的职业病又发了~,什么?你不了解在哪用lldb?
第一!你得先crash或者将程序断下来!直到你看来图16之(lldb)字样出现,你就算可以敲命令了~~
历次你想查变量,常量,你如果重描绘NSLog去打印,然后再度编译,去实施,重头开始?太费事了,有矣lldb你如这么
图18

ACCESS 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

ACCESS 19
其一事物怎么翻译为?我们尽管深受检查器吧!!也许已经学习了iOS开发多年之你,从来还未曾顾到或利用是家伙,但是博主很倚重总责的喻你现在市面上另一样款款可以之APP都见面用instruments来为代码更加健全!难道instrument是春药?怎么会使代码健壮呢?
这个敦实不是雅健壮~哎~~ 我才18秋能够免可知清纯一点呀

instrument里面包含了众多器,内存溢出分析,性能分析,各种分析……
如果细说的话,这个真的好吧每个工具开始平首博客,但是博主是一个知晓授人以鱼勿苟授人以渔的道理的老司机!所以博主当然不见面整整游说一样整整!我们就来受在大家省专用debug的内存溢出分析工具的采取吧!
图20

ACCESS 20
于使用leaks之前大家好尝试这“Analyze”
图21

ACCESS 21
analyze可以高速的发现而的代码中release的题目,以及连续过程遭到的父类方法缺失等等问题!一般一个优异之iOS开发工程师No
Warning、Pass
Analyze是不过核心的品行!我知道乃曾经对此你协调的品种的好多只warning已经麻木了,但博主本人负责人地报告你,这样不好!,因为发一样篇云南民歌《老驾驶员带带自己》听得博主神清气爽!

坚守当iOS开发者的贞操!跟着自己大喊口号!

No Warning!Pass Analyze!

咱延续回来使用leaks!如果analyze都由此了,那么就算好以leaks工具,发现本年老妖级别的侧漏了!
图22

ACCESS 22
一经提示有一个靶有侧漏的风险,你还可以这样弹出侧边的拓展细节
图23

ACCESS 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

ACCESS 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

ACCESS 25
起先视图调试后,Xcode会对应用程序的视图层次拍一个快照并展示三维原型视图来探讨用户界面的层级。该三维视图除了展示app的视图层次外,还显每个视图的职、顺序与视图尺寸,以及视图间的交互方式。

以身作则工程于Xcode中之老三维视图展示正常,但表视图单元格似乎有硌最为厚实了。
图26

ACCESS 26
暂停应用程序调试并于左边选中Main.Storyboard来修补问题。点击表视图并选中Editor
> Resolve Auto Layout Issues > Reset to Suggested Constraints.
图27

ACCESS 27
编译并更运行应用程序以确定用户界面显得正常。点击Debug View
Hierarchy按钮更进一步了解视图调试之效益。

视图调试功能

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

入选后,Xcode会高亮该视图,并于会见于右边展示Object
和Size检查器。查看在跳转栏顶部并肯定UITableView是右手最后一个类型。
图28

ACCESS 28

Object 和
Size检查器包括大气可行之信息。过去开发者需要负日志语句或者断点来检查视图的布局。

开拓右边的Size inspector(规格检查器),下方是Auto
Layout,可以看来视图上既运用了科学的束缚。在Object
inspector中,我们可检查所选视图的性。
图29

ACCESS 29

于Xcode的调试区有9只视图调试过程遭到一经为此到的按钮和滑块儿。
图30

ACCESS 30
从左到右控件排序:

调视图间距:调整不同视图间的间隔。

显示给分开的始末:当前来得视图中吃分割的局部。

显约束:展示选中视图的封锁。

重置查看区域:将3D渲染透视图恢复到默认状态。

调整查看模式:选择性地出示3D渲染透视图,比如就展示内容,仅显示框架和以出示内容跟框架。

缩小:缩小3D渲染透视图

过来:将3D渲染透视图恢复到默认尺寸。

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

调整而视视图范围:隐藏视图或显示视图,一步步分析3D渲染视图,向左或朝右侧滑动滑块儿有相反的效应。

提议花一点工夫上手操作下这些空中,并掌握各自的用。

视图层排序

重新编译和运行应用程序,并点击用户界面底部的”More”标签。第一这去界面看起还OK,但是它们没有依照开发者的定义准执行,图片及之模糊效果没亮下。我们好透过调节视图层次来还好地确定问题所在。

望左或朝右侧拖拽视图来查阅具体情况,接着用view spacing
slider向右侧拖动。
图31

ACCESS 31
这样一来,不同视图间的间距变死了,层次也愈发鲜明,我们看出在图”下方”还暗藏着另外一个视图,选中隐藏的视图,它就是是”丢失”的视觉效果视图。
图32

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

Xcode在文档概览中以提升顺序堆叠视图,换句话说,列表顶层的视图是视图层次之基本功。

修补问题格外粗略。运行时,Blur Effect View隐藏在Sky
Image之下,因为它们是视图层次的率先单视图。在文档概览中点击并拖拽 Blur
Effect View,结果会如下图展示同:
图33

ACCESS 33
重复运行应用程序就能观看模糊效果了。应用程序的用户界面看起称设计之初衷。我们还得查阅iOS模拟器的别调试功能,看看还到了任何什么地方还是效益。

5.iOS模拟器调试功能

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

ACCESS 34
接下来会见到app的用户界面被红和绿色覆盖,显示了怎么图层可以给增大覆盖,以及哪图层是晶莹剔透底。混合层属于计算密集型视图,所以推举尽可能地应用不透明底图层。
图35

ACCESS 35
苹果在那个文档(iOS Simulator User
Guide)中对之展开了注明,并当表视图处理达成运了未透明图层。滚动视图时会略表现不大好的地方,一个根本之缘故纵然是下了交集图层,而若情节背景是休透明层,那么页面滚动效应即使见面杀流畅和安宁。

对于当下款应用程序来说,假而用户产生数百只类别要显示,可能会见冒出滚动性能不一致的状。表视图单元格当前应用的凡混合层。由于视图控制器的视图背景是反动,所以无表视图单元格使用的凡混合层或者无透明层,终端用户不会见意识到有什么不相同。

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

ACCESS 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

ACCESS 37
除外被视图着质异,还要记住iOS模拟器也可以调剂Core
Location问题。你得以一定经纬度模拟设施,

设您的应用程序使用iCloud来保管数据,你为堪手动触发同步事件。

正文中采取的demo
app非常简单,使用文中涉及的技术可拉您以未来省成千上万日子。视图调试好帮助您修正很多用户界面中出现的题材。

除此之外Xcode和InterfaceBuilder之外,使用iOS模拟器的调节功能可以升官以性及辨识出进程被的瓶颈。苹果的人机交互指南(中文版
英文版)强调了积极响应对app的根本,能叫用户觉得采取易于使以及操作。苹果对InterfaceBuilder的晋级为视图调试变得前所未有的粗略。

结语

顿时篇稿子博主花了3单礼拜,断断续续才写了的,当中错漏应该特别多,但是无论如何鄙人觉得应该算配之上豪华套餐的称呼了,当中iOS开发之骨干、常用与高阶的调试技能都关系了,但是仍然有不少别样的奇门巧技没有介绍及,主要是讨厌的“篇幅”限制住了博主广博的爱,但是无论如何,这首稿子大家聊可以作为是一个调剂技术的目录,因为博主于这边描绘的语的十分浅显,你无应当仅仅满足于立篇稿子,你如想如果反世界吧,你应有借着博主的当即首目录式文章深入地学习和研究!

本来还有Crash的日记、测试工程、以及强大牛逼哄哄的老三正值调试库等这篇博客没有涉及到,这是一个遗憾,但是本人相信聪明之公会去Google一番底!

再有咱们以及薄优鸡的故事才刚刚开始。

 

相关文章