话很少说, 总结一下我的感受有利于提升iOS开发效率的几个小技巧。html
本文将从下面几方面介绍:ios
command+1-8:
git
打开 Project/Symbol/Find/Issue/Test/Debug/Breakpoint/Log 导航栏github
command+0:
数据库
显示/隐藏 左側 tool panel编程
option+command+0:
vim
显示/隐藏 右側 tool panelwindows
option+command+1:
xcode
显示 右側 the file inspector浏览器
option+command+2:
显示 右側 quick help inspector
Option+左键点击操做
一个高速打开Assistant Editor的方式–仅仅需要按住Option键并点击你想要在当前编辑框右边打开的文件就能够。
shift+command+J:
在项目导航中定位当前文件(Reveal in Project Navigator)。
command+J:
焦点切换(Move Focus),可高速定位到编辑界面
shift+command+Y:
显示/隐藏 控制台
Command+Shift+F
使用项目搜索可以找到某个变量或方法名的被提到的次数。
可以依据实例来匹配。并可忽略大写和小写字母。另外还可以对查找的变量名进行替换。
Command + Shift + O
可以直接跳转到某个方法定义或者指定的代码文件。
Control+6
(键入方法/变量名+Enter跳转)
跳转至当前代码文件里的代码行。假设文件里有上千行代码。你可以经过该快捷操做来缩小查找范围。从而在需要的地方插入代码以加入新的功能。
Control + Command + Up/Down Arrow
.h 和 .m文件间的高速切换
Control + 1
该快捷键可打开’Show Related Items‘弹出菜单’。假若你已经将光标放在了不论什么方法中,并点击‘CTRL + 1 ’就可以很是方便地经过弹出的视图訪问该方法的所有调用者和被调用者。
Command + R
执行应用程序
Command + B
构建应用程序
Command + .
中止执行(Stop)
Command + \
C前行设置/取消断点;经过鼠标点击蓝色断点来启用/禁用当前行断点。
Command + Y
全局激活或禁用所有的断点,激活进入调试模式(此时断点蓝色可见)。
Command + Shift + K
清除project(clean)
command+[/]
向前/向后缩进
command+/
凝视选中的代码
option+command+←/→
折叠当前代码块
option+shift+command+←/→
折叠该文件内所有代码块(方法/函数)
option+command+[/]
Move Line Up/Down
Ctrl + F
前移光标
Ctrl + B
后移光标
Ctrl + P
移动光标到上一行
Ctrl + N
移动光标到下一行
Ctrl + A
移动光标到本行行首
Ctrl + E
移动光标到本行行尾
Ctrl + T
交换光标左右两边的字符
Ctrl + D
删除光标右边的字符
Ctrl + K
删除本行
Ctrl + L
将插入点置于窗体正中
有时候在程序出错的时候不能能准肯定位到奔溃的那一行代码,而是直接跑到main循环或者Appdelegate里面, 或者会给你这种提示:
EXEC_BAD_ACCESS:
是否是有种想哭的冲动?然而你仅仅需要这样设置全局断点, 它就会本身主动定位到出错的位置:
Enable NSZombie Objects多是整个Xcode开发环境中最实用的调试技巧。这个技巧很是很是easy追踪到反复释放的问题。该技巧会以很是简洁的方式打印指出反复释放的类和该类的内存地址。
怎么开启僵尸对象呢?首先打开’Edit Scheme’(或者经过热键⌘<),而后选择’Diagnostics’选项卡,勾选Enable NSZombie Objects选项。
在Debug菜单中Breakpoints->Create Symbolic Breakpoint
在Symbolic中填写例如如下方法签名:
-[NSObject(NSObject) doesNotRecognizeSelector:]
设置完毕后再遇到类似的错误就会定位到详细的代码。
顾名思义, 可以依据你指定的条件执行断点。
这样仅仅有遍历到 c==“H” 的时候 断点才会被触发。
至于其它的 ignore, Action 等, 可以本身尝试下, 都是神器。
执行app过程当中,按下底部的Debug View Hierarchy button,或者从菜单中选择Debug > View Debugging > Capture View Hierarchy 来启动视图调试。
启动视图调试后,Xcode会相应用程序的视图层次拍一个快照并展现三维原型视图来探究用户界面的层级。该三维视图除了展现app的视图层次外,还展现每个视图的位置、顺序和视图尺寸。以及视图间的交互方式。
在Xcode的调试区有9个视图调试过程当中要用到的button和滑块儿。
从左到右控件排序:
编译并执行应用程序,选中模拟器,从 Debug菜单中选择Color Blended Layers选项。
除了标记图层外,还有其它一些实用的功能可帮开发人员在iOS模拟器中调试应用。下面是当中一些比較实用的:
也但是使用快捷键Command-T来操做。
在iOS模拟器中,从Hardware菜单中选中Toggle In-Call Status Bar。
自从版本号 5 開始。Xcode 在调试器已经附带了高速查看显示。
正如你可以在桌面上高速点击空格键来查看文件的内容。在 Xcode 中你可以用可视化的高速查看各类数据类型。
在咱们的 color 变量上按空格键当即给出了一个答案,你脑海中应该当即浮现起了需要 RGB 转化计算:
同一时候。你还可以直接从代码的调试中调用高速查看。比方下面的方法,buildPathWithRadius(_:steps:loopCount:)
。
它创造了某种形式的 UIBezierPath
,但你已经忘了,而这段代码到底是否工做
- (UIBezierPath *)buildPathWithRadius:(CGFloat)radius steps:(CGFloat)steps loopCount:(CGFloat)loopCount {
CGFloat x, y;
CGFloat away = radius / steps;
CGFloat around = loopCount / steps * 2 * M_PI;
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointZero];
for (int i = 1; i <= steps; i++) {
x = cos(i * around) * i * away;
y = sin(i * around) * i * away;
[path addLineToPoint:CGPointMake(x, y)];
}
return path;
}
为了看到结果,你确定可以为这个 bezier 路径新建一个本身定义视图或画成一个 UIImage。但更好的是。你可以在方法结尾插入一个断点并把鼠标移上去查看 path:
高速查看支持大多数你想要可视化的数据类型。
Xcode 已经为你覆盖了下面几种类型:
类型 | 说明 |
---|---|
图片 | UIImage,NSImage,UIImageView,NSImageView,CIImage,和 NSBitmapImageRep 都可以高速查看。 |
颜色 | UIColor 和 CGColor。 |
字符串 | NSString 和 NSAttributedString。 |
几何 | UIBezierPath 和 NSBezierPath,以及 CGPoint,CGRect,和 CGSize。 |
地区 | CLLocation 将显示一个很是大的,互动的映射位置,并显示高度和精度的细节。 |
URLs | NSURL 将显示 URL 所指的本地或远程的内容。 |
SpriteKit | SKSpriteNode。SKShapeNode。SKTexture,和 SKTextureAtlas 都会被显示。 |
数据 | NSData 将美丽的显示出偏移的十六进制和 ASCII 值。 |
视图 | 最后但并不是最不重要的。不论什么 UIView 子类都将在高速查看弹出框中显示其内容,方便极了。 |
很是多 Objective-C 代码事实上都不是必需去手写。不管是 @interface 声明仍是 if (!self) return nil; 之类的咒语。Xcode 代码块可以把这些反复的模式和样板提取出来进行复用。
打开编辑器右側的工具面板。就能看到所有可用的代码块。在工具面板的下方,有 4 个水平分布的小图标。
点击 { }
图标可以查看代码块仓库。
有两种方法将一个代码块插入你的代码:
你可以从代码块仓库拖到你的编辑器里面:
亦或那些有快捷输入码的代码块,你可以这样:
建立代码块的过程不是很是直观很是难用文字去描写叙述。
它使用了 OS X 系统中一个比較隐晦的功能。让用户拖拽选中文本生成“剪切文本”。
看下实际操做就很是好理解:
用户将本身定义的代码块加入到库里面后,可以双击列表中的块去编辑。
每个块都有下面内容:
Xcode 不会警告冲突 / 反复的输入码,因此必定要确保新加入的不要和已有的冲突。
~/Library/Developer/Xcode/UserData/CodeSnippets/目录存放了所有 Xcode 代码段的文件表示
在你使用其它代码块时你可能已经注意到了这些占位符:
在 Xcode 中,占位符使用 <# 和 #>
来分隔。中间是占位文本。
赶忙使用占位符给你的代码块加入一点动态效果吧!
你可以在 这个 GitHub 项目 找到一些好用的代码块。
Xcode插件可以大大提升开发效率。
OMColorSense
VVDocumenter-Xcode
假设Xcode插件不能知足本身的需求,怎么办?
假设你去到一位熟练的木匠的工做室。你老是能发现他/她有一堆工具来完毕不一样的任务。
软件开发相同如此。你可以从软件开发人员怎样使用工具中看出他水准怎样。有经验的开发人员精于使用工具。对你眼下所使用的工具不断研究,同一时候了解一些替代品的使用,当你眼下所用的工具没法知足你的需要时可以填补空缺。
获取灵感吧。但不要抄袭。
有些带有动画。
感谢你,@joaopmaia!
你可以部署到真实设备上,看看在你手上是什么样的感受。
仅仅需要设计一次。而后可以依据需要进行缩放。
同一时候还带有一个很是强大的导出系统。
对于Sketch演示样例项目。请看Sketchmine。个人 screencast on Sketch上有视频演示。
也有 iOS 6版本号的。
苹果提供的内置图标并很少,所有拥有这么一个囊括各类概念的图标集合很是实用。我还在寻找关于婴儿的一些图标。Glyphish是以包的形式公布的,最新的包里有iOS7的“细线条”图标,当设计iOS7应用的时候很是实用。
可以在不论什么像素维度上高速简便的获得一个图标。
因为字体在本质上可以轻松缩放。用这种办法可以很是方便的在不一样平台使用的图标,而无需依据不一样尺寸导出不一样的版本号。
个人screencast on PaintCode上有视屏演示。
强大的三路合并功能,但找下载连接不easy啊。我每次要找的时候都认为在他们站点上藏的很是深啊。
这是原来(已经废弃)的GitX的一个衍生品,我在这个衍生品列表上找到的。
仅仅要打开iTunes,查看本地应用列表,对图标右键在Finder中打开。而后打开应用,你可以看到一堆PNG文件,但你无法查看它们。使用了pngcrush你可以将它们所有提取出来,而后用预览来查看。
你相同可以经过将手机的代理设置为你Mac上正在执行的Charles来监控你设备上的流量。
字签名的SSL证书。请求&响应断点,请求/响应查看器,Charles真心是大赞。一个必须拥有的工具。
再次,个人dissecting apps上视频演示。
我知道你在想什么。难道不是所有iOS开发人员都用Xcode吗?答案是大多数都使用。但从我和Xcode的恩恩怨怨来看。我相信很是有必要来考虑下有哪些替代品。
强大的重构工具和功能可以帮助你更快地写代码。高速识别死代码,当你使用了相关代码时本身主动插入#import语句,轻松选取变量、方法以及类。我惟一但愿的是它能成为Xcode的一个插件。
感受不错。‘nuff说。
当我开着这个功能写代码。别人看到的时候老是问我:“哇哦!
这是啥玩意!”
假设你不想用命令行的话很是实用。
啊哈,文档,每个人最爱的话题。文档很是重要,所以请注意一下。咱们可以让你生活变得简单一些。
它很是好用。赞成你下载并搜索各类语言和框架的API文档,而且速度很是快。
最快訪问文档的方式。为了使搜索更快。我把Dash和Alfred集成起来使用。
是的,这里仅仅列举了一个工具。我不想引入真正的第三方库列表,因为它们属于全然不一样的还有一个列表。
当咱们谈到依赖管理的时候。最最重要的就是:
赞成你轻松高速地将第三方库集成到你的应用中。它是经过建立还有一个静态库project。而后本身主动连接到你的project来实现的。有成千上万个可用的pod,可以轻松地为你的项目添加那些不属于你(或者私有)的第三方库支持。我在个人每个项目里都用了CocoaPods。
有时候咱们正在开发应用。咱们想更好的了解究竟发生了什么,修bug或者改善性能。
查看屏幕上视图元素的精确维度,打印视图层次,甚至水平或垂直移动视图。
因为它是个HTTP通道API, 搭建简单,你仅仅需要更换你的主机名就能够了。
它还带有一个通知中心监视器,你可以轻松看到发出了哪些NSNotification。谁在观察它们。
还有一个监控NSNotification的应用是Reveal。
一般8位PNG图不带有alpha通道。所以假设你的图片可以用8位来表示(比方一个单色的button)的话。你可以经过把25位PNG转成8位的来节省很是多空间。
图片更小意味着应用尺寸更小,执行时载入它们所使用的内存也更小。
终于你的iOS应用很是可能会和server通讯分享数据、获取新内容、发送推送通知等等。尽管你都可以手动去作,但你也许想要更方便的解决方式。
它创建在不少开源ruby gem的基础上,所以假设你想要的话可以挑选构建你本身的栈。
看一下Nomad CLI,有很是多好用的相关工具。
实现推送通知至关简单。
这里还有些别的选择,但没有一个让我认为有冲动把flurry换掉的。我乐于听取意见。欢迎在评论里告诉我吧。
可以用来本身主动化不少过程。
測试人员可以获得一个连接。无线安装新的測试版本号。
它还提供了健壮的崩溃报告功能。你可以轻松应对你应用中的崩溃。
咱们使用TestFlight已经取得了很是大成功。轻松公布应用,从用户那收集反馈。
我惟一但愿他们能对这个服务进行收费。它还包含了分析和崩溃报告功能,但咱们没实用到那些功能。
对于App Store或者普通市场上的一些截屏很是实用。
Status Magic让你充分定制你的状态栏。包含去除一些元素,把时间改为苹果喜欢的“9:41 AM”那样。等等。
在公布版里本身主动上传dSYM文件,所以你的崩溃日志会为你本身主动符号化并组织好。你可以专一于最关键的部分。
我认为咱们做为一个社区对測试关注得还不够。
有很是多不错的工具可用,大多数都很是好用,咱们没有借口不为咱们的应用写一些測试。
它相同带有健壮的mocking以及stubbing库和断言。
下面的几个都可以用来执行端到端的验收測试。
这些測试会和你的界面交互,点击button,滚动,等等。
尽管上它们执行会比較慢,但是在大范围内測试会更easy看到所有的模块整合的是否良好。
你固然想要知道你的应用能赚多少钱。不是么?有一些解决方式。这儿有些还不错的: