• Objc: 使用Xcode


    转载:http://marshal.easymorse.com/tech/objc-%E4%BD%BF%E7%94%A8xcode

    Xcode功能很多,以下介绍常用的功能,帮助ObjC开发人员提高编码和调试效率。

     

    改变公司名称

    通过xcode编写代码,代码的头部会有类似下面的内容:

    image

    应该将这个内容改为公司或者项目的名称。

    在xcode 3.2.x之前,需要命令行设置变量。比如《objective-c基础教程》第七章中提到的方式。

    之后,可以通过xcode的配置项操作了。操作步骤见下面图示:

    image

    然后:

    image

    这样,再创建文件,就有类似这样的效果了:

    image

     

    通过搜索框缩小文件范围

    当项目开发到一段时间后,源代码文件会越来越多。再从Groups & Files的界面去点选,效率比较差。可以借助Xcode的浏览器窗口,即:

    image

    这里插一句,如果讨厌显示这个窗口,也可以通过快捷键:shift+command+e来切换是否显示。

    还是继续说搜索框缩小文件范围。上图的搜索框,可以输入关键字,这样浏览器窗口里只显示带关键字的文件了。比如我只想看Book相关的类。

    image

     

    如何格式化代码

    比如下面这段代码:

    image

    很多行都顶格了。需要进行格式化。可以选中需要格式化的代码,然后在上下文菜单中找:

    image

    这是比较规矩的办法。Xcode没有提供快捷键,当然自己可以设置。我又比较喜欢用快捷键。我的做法是:ctrl+a(全选文字),ctrl+x(剪切文字),ctrl+v(粘贴文字)。Xcode会对粘贴的文字格式化。

    如何缩进代码

    代码有的时候要缩进,有的时候又要做相反的操作。单行缩进和其他编辑器类似,tab键即可。如果选中多行呢?需要快捷键了。command+]表示缩进,command+[表示反向缩进。

     

    代码的自动完成

    使用IDE工具的一大好处是,工具能够帮助我们自动完成比如冗长的类型名称。Xcode提供了这方面的功能。

    比如上面提到的输出日志:

    NSLog(@"book author: %@",book.author);

    如果都自己敲,很麻烦的。可以先敲ns,然后快捷键:ctrl+.,会自动出现:

    image

    然后填写参数就行了。ctrl+.快捷键的功能是,自动给出第一个匹配ns关键字的函数或类型。刚巧NSLog是第一个。如果继续ctrl+.,则会出现比如NSString。以此类推,会显示所有ns开头的类型或函数,循环往复。

    或者,也可以用ctrl+,快捷键,比如还是ns,那么会显示全部ns开头的类型、函数、常量等的列表。可以在这里选择。

    其实,Xcode也可以在你敲代码的过程中自动给出建议。比如咱们要敲NSString。当敲到NSStr的时候:

    image

    后面的ing就自动冒出来了。如果和你预想的一样,直接按tab键确认即可。也许你想输入的是NSStream,那么可以继续敲。另外,也可敲esc键,这时就会出现结果列表供选择了。

    image

    如果是正在输入方法,那么会自动完成比如下面的样子:

    image

    可以tab键确认方法中的内容,继续。或者可通过快捷键ctrl+/,在方法中的参数来回切换。

     

    设置项目快照以及恢复到快照

    其实在不用Xcode之前,我根本没有使用这种东西的需求。如果使用Eclipse,我习惯把代码提交到SVN上,并借助SVN的copy功能实现服务器端的快照。

    Xcode上使用版本控制不是很方便。因此本地快照功能还是很值得使用的。

    快照(snapshot),主要作用是,创建快照,好比,给你的项目拍了个照。然后你可以随便修改代码了,不必担心改乱了无法回退到之前的版本。如果确实改乱了,恢复到快照就可以了。恢复后,好像什么也没发生过。

    image

    可以通过make snapshot创建快照,或者快捷键ctrl+command+s。

    想要恢复的时候:

    image

    然后选中做快照的版本:

    image

    make按钮可拍照当前项目,生成新的快照。可在comments中写下该快照的备注信息,便于以后恢复时辨别。delete按钮可删除不必要的快照。restore,将用选中的快照覆盖当前项目。show files可列出选中快照和当前项目文件的差异。

    image

    上图列出了有两个文件不同。再选中文件:

    image

    可以看到不同的地方给出了标注。

     

    文件内查找和替代

    代码中经常会做查找和替代的操作。如果只是查找。直接按command+f,代码的右上角会出现对话框:

    image

    在里面输入关键字,不论大小写,代码中所有命中的文字都高亮显示。

    image

    可以做更复杂的查找,比如是否大小写敏感,是否使用正则表达式等等。

    可以切换到替代界面:

    image

    下面的界面,我是将查找设置为大小写敏感,然后替代为myBook:

    image

    可点击按钮是否全部替代,还是查找一个替代一个等。

     

    项目内查找和替代

    如果需要在整个项目内查找和替代:

    image

    还是找关键字book:

    image

    替代就不说了,如何操作一看便知。

     

    作用域内编辑

    比如:

    image

    我想把局部变量myBook改回成book。那么可以用到这个功能。首先要鼠标选中变量:

    image

    然后:

    image

    这时会看到: 
    image

    直接修改变量名,发现所有该变量名同时跟着改变了:

    image

     

    重构代码

    重构(refactor)的概念这里不展开说了。读者可参考专门的论述。这里只举具体例子。比如修改类的名称,就是一种重构行为。Xcode提供了这方面的支持。

    比如想把Book类改为GeneralBook类。首先要把光标放在类的头文件或者m文件的标注部位:

    image

    然后:

    image

    然后:

    image

    点击preview,可以预览改动的内容:

    image

    一般要保持snapshot的勾选,这样重构操作会生成快照,便于重构错误后的恢复。

    点击apple,重构将执行。

     

    快速定位到代码行

    可以:

    image

    定位光标到选中文件的行上。一般会用快捷键,command+L。使用菜单或者快捷键,都会出现下面的对话框,输入行号,回车,就会到该文件的指定行。

    image

     

    快速打开文件

    有时候,我们想快速打开头文件,比如:

    image

    这里的Cocoa.h到底是啥内容。可以鼠标选中Cocoa.h,如上图。然后:

    image

    这时会弹出对话框:

    image

    双击Cocoa.h条目就可以看到了:

    image

    另外,还有个更方便的操作,针对头文件的,就是按住command键鼠标双击类型(函数、变量等)名称。会在源代码窗口中显示该类型的头文件。

     

    使用书签

    以前在使用Eclipse,我经常用到TODO标签功能,比如正在编写代码的时候需要做其他事情,或者提醒自己以后再实现的功能,就写个TODO注释,这样,可以在Eclipse的视图中可以找到,方便以后找到这个代码并修改。

    Xcode中是否有相应的功能呢?我现在觉得书签功能可以做类似的事情。

    比如我写了个代码:

    image

    这个方法是空的,printInfomation。暂时不需要实现。但是要记下来,便于以后能找到并补充。那么让光标在方法内部。然后鼠标右键,Add to Bookmarks:

    image

    然后会弹出对话框,在里面填写标签的内容,比如:

    image

    这样,就可以在项目的书签节点找到这个条目了:

    image

    点击该条目,将回到刚才添加书签时光标的位置。

     

    自定义导航条

    在代码窗口上边,有一个工具条。提供了很多方便的导航功能。比如:

    image

    也可以用来实现上面TODO的需求。这里有两种自定义导航条的写法。其中:

    #pragma mark

    是标准写法。而:

    // TODO: xxx

    // FIXME: xxx

    是Xcode兼容的格式。

    完整的代码:

    image

    产生了这样的导航条效果:

    image

     

    使用Xcode帮助

    如果想快速的查看官方API文档,可在源代码中按下option键并鼠标双击该类型(函数、变量等),比如,下面是NSString的API文档对话框:

    image

    如果点击上面标识的按钮,则会弹出完整文档的窗口:

    image

     

    调试代码

    最朴素的调试方法,是通过NSLog打印出程序运行中的结果,然后根据这些结果判断程序运行的流程和结果值是否符合预期。对于简单的问题,使用这种方式也许就够用了。

    但是,如果开发的是商业项目,它往往足够复杂,需要借助Xcode提供的专门调试工具。所有的编程工具的调试思路都是一样的。首先,你要在代码中设置断点。想象一下,程序的执行是顺序的,你可能怀疑某个地方的代码除了问题(引发bug),那么就在这段代码开始的地方,比如是个方法的第一行,或者循环的开始部分,设置一个断点。那么程序在调试时会在运行到断点时中止,接下来,你可以一行一行的执行代码,判断执行顺序是否是自己预期的,或者变量的值是否和自己想的一样。

    设置断点很简单,比如想对红框表示的行设置断点,就单击该行左侧红圈位置:

    image

    单击后会出现断点标志:

    image

    然后,运行代码,比如用快捷键:command+enter。这时将运行代码,并停止在断点处:

    image

    可通过shift+command+y,调出调试对话框:

    image

    这和其他语言IDE工具的界面大同小异,因为都具有类似的功能。可通过:

    • continue,继续执行程序
    • step over, step into, step out,用于单步调试,分别表示:
      • step over:将执行当前方法内的下一个语句
      • step into:如果当前语句是方法调用,将单步执行当前语句调用方法内部第一行
      • step out:将跳出当前语句所在方法,到方法外的第一行

    通过调试工具,可以对应用做全面和细致的调试。


  • 相关阅读:
    【原创】C#零基础学习笔记010-数据流技术
    【原创】C#零基础学习笔记009-异常处理
    【原创】C#零基础学习笔记008-C#集合处理
    【原创】C#零基础学习笔记007-面向对象的特性
    【原创】C#零基础学习笔记006-面向对象编程基础
    【原创】C#零基础学习笔记005-字符串和日期
    【原创】C#零基础学习笔记004-数组
    session
    最简朴的 session 来实现 登录验证
    cookies session 代码例子
  • 原文地址:https://www.cnblogs.com/zengqh/p/2477389.html
Copyright © 2020-2023  润新知