第5章节:
1.什么是复合:将多个组建组合在一起配合使用,从而得到完整的作品.这里需要注意的一点是:从严格上来讲,只有对象间的组合才能叫做复合,诸如int,float,enum和struct等基本类型都被认为是对象的一部分.
提醒:如果类中没有包含人和实例变量,就可以省去代码中的花括号。
需要记住的有:通过NSLog()可以使用%@格式说明符来输 出对象.NSLog()处理%@说明符时,它会询问参数列表中相应的对象以得到这个对象的描述.从技术上说,就是NSLog()给这个对象发送描述消息, 然后对象的description方法生成一个NSString并返回.之后NSLog()在其输出中包含这个字符串.在类中添加description 方法就可以自定义NSLog()如何输出对象.
2.存取方法:存取方法(accessor method)是用来读取或改变对象特定属性的方法。类存取方法称为setter方法。另外一种存取方法就getter方法。getter方法为使用对象的代码提供了读取对象属性的途径。
3.修改方法(mutator)是用来改变对象状态的方法。需要说明的一点:在其对象的属性进行操作时,应该始终使用对象所提供的存取方法,永远不要直接改变其对象属性的数值。存取方法是程序间接工作的另一个例子。
4.防御式编程:在存取方法中使用通用代码来检查实例变量的数组索引,以保证它是有效数值,若是超出了有效范围,那么程序就会输出错误信息并且退出,那么 该段代码就是所谓的防御式编程.(编程者需要考虑种种可能出现的问题,并且设置异常抛出机制,引申到编程者换位思考的问题上,就可发现出程序所欠缺的部分 待优化的功能)。
注意:继承的适用范围,切记不要用复杂的系统来继承包含在本系统中的模块,如:简单来说父与子的血脉继承关系是单向的,所以继承也需要考虑适用范围问题。
第7章节-深入了解Xcode:
1.使用编辑器的技巧与诀窍:
Xcode会在开发者键入代码法过程中给出建议,这是Xcode的代码提示功能,通常叫做代码自动完成功能.
Xcode中的快捷键:command键加上“[”、“]”两个键的功能是把当前光标位置的一行代码进行整体左移跟整体右移。command键加上“/”则为把当前光标位置的一行代码进行行注释。
2.括号匹配:输入程序代码时,也许在输入了某些字符(如”)”、”]”或”}”)后屏幕会有些闪烁,这就是Xcode在告诉在这里与之对应的开括号在哪里.这就是Xcode的”括号匹配”,也可以双击某个分隔符,Xcode会选定它以及与它匹配的括号之间的全部代码.
3.批量编辑:选择File->Make Snapshot(快捷键command-control-S),Xcode会记住项目的当前的状态.先在你就可以随心所欲的”破坏”你的项目.如果意识 到犯了一个很严重的错误,那么可以通过File->Snapshots来恢复你的快照.在这里若是要做什么项目上的重大的修改的时候都推荐备份一份 代码跟保留一份修改当前一个完整版本的代码快照.(说明:备份代码的重要性,因为在实际上快照被存储在一个磁盘镜像中,它存放 于~/Library/Application Support/Developer/Shared/SnapshotRepository.sparseimage.有时候这个磁盘镜像可能会被损坏 (也许因为生活压力太大了),这时Xcode会向你报告一个“神秘”的错误:Snapshot Failed:A project snapshot cannot be created.如果开发者看到了这样的错误,请尝试删除这个景象并重新启动).
4.Xcode中的查找与替换功能:此功能在子菜单Edit->Find中.里面有几个非常方便的选项.Find in Project可以在项目的所有文件里进行查找和替换.其实这种查找与替换工作并不是很好使用,如:若是开发者只是想重命名函数中的变量,那么它做了过多 的操作(因为它可能会改变整个文件中的变量名称),而开发者想重命名一个类时,它又无法办到,另外重要的一点,它不能重命名源文件.<在这里又有两 个功能可以弥补这些不足:1.可以简称为Edit all in scope,开发者可以选定一个符号,如局部变量或参数,然后选择Edit->Edit all in Scope,然后在开发者输入时,所有该符号出现的地方都会立即更新,这不但是进行大量改动的快捷方式,而且操作是看起来很”酷”,输入完毕之后,只要在 源文件编辑窗口单击其他地方,就会离开Edit all in Scope模式。2.“内置重构工具”,若开发者有一个GUI程序,它甚至能够深入到nib文件的层次进行修改操作,在需要修改的文件中设置插入点,然后 选择Refactor,为了保险需要确保Snapshot复选框被选中,单击Preview之后,Xcode会分析出要做什么,并将结果展示出来.可惜的 是,重构并不能重命名注释中的文字,所以类末注释、Xcode生成的头文件注释或者任何开发者编写的文档注释都需要手工编辑,开发者可以使用查找和替换功 能来简化这一过程.
5.代码导航:这里参考博客园中的emacs快捷键。
7.任意搜索:Xcode项目窗口的右上角右一个搜索框,Xcode通过开发者输入的字符来过滤浏览器中显示的内容.要使用这个索搜框,首先要在 Groups&Files列表中选定任意项,如Source文件夹,然后浏览器会显示该文件夹里的所有源文件。在搜索框中输入文本可以对这些文件 进行筛选。
8.芝麻开门:假如开发者正在看某个源文件,看到了文件上方的#import,如果能够徐素打开这个头文件而不用鼠标点来点去,是不是会很方便呢?这个非 常容易:只需要使用command+shift+o键就可以弹出一个对话框,然后在这个对话框中搜索栏中输入开发者看到的头文件名,然后在下面弹出来的信 息中选取适合的文件即可查看此文件内容.
9.书签:在Xcode中与许开发者在代码中插入书签,在代码中可能又一些需要引起人们注意的地方,如:在代码某一个区域以后需要修改优化等操作的 话,那么开发者在这里做一个标记的话,到动手操作的时候就可以快速定位此处了。做法为:首先在源文件中放入插入点或者选定一个文本区域,然后选中 Edit->Add to Bookmarks,或者使用默认的快捷键command+D(与Safari中的一样),最后当出现提示的时候,输入书签名称即可.
10.集中注意力:紧挨着源代码的左边又两个空列,它们当中左边较宽的一列叫做边列(gutter),靠右较窄的一列叫做焦点列(focus ribbon):焦点列的作用能够让开发者在浏览代码段时集中注意力.焦点列的灰度:代码嵌套得越深,在它旁边的焦点列中,灰色也会越深.这种颜色编码能 够使代码的复杂程度一目了然.用鼠标悬停在焦点列上时会突出显示相应的代码段,也可以点击焦点列来折叠相应的代码段。
11.开启导航条:在代码编辑器的顶部右一个小控件条,也就是导航条.这里面的很多控件可以让开发者快速地在项目中的源文件之间进行切换.关 于#pragma的说明:“Pragma”源自希腊单词,意思是“行动”.#pragma指令将Objective-C常规代码之外的信息或说明传递给编 辑器和代码编辑器.通常,Pragma是被忽略的,但它在一些软件开发工具中可能有其他含义,如果某个工具并不知道pragma是什么,则应该“点头微 笑”并且忽略它,而不是生成警告或错误信息.
12.研究助手(Research Assistant)的浮动小窗口会根据逆在Xcode力的交互操作来更新所显示它的内容,要打开研究助手,选择菜单Help->Show Show Research Assistant。
13.文档管理程序:开发者想直接访问苹果公司官方API文档,最快的方法是按住Option键并双击某个符号,这是查找该符号相关文档的快捷方 式.需要在Xcode其他窗口甚至是网页浏览器中打开文档也很容易,只需要按住control键并单击(或右键单击)文档区域来打开菜单即可.
14.调试:系统的在代码中查找程序哪里出错的过程叫做调试(debugging)。
15.暴力调试:最简单的调试方式就是暴力调试,暴力调试是指在程序中放入输出语句(如NSLog)来输出程序的控制流程和一些数据值.
16.Xcode调试器:Xcode还有一个调试器,调试器是位于开发者编写的程序和操作之间的程序,它能够中断开发者的程序,使之在运行中停止. 这样就可移检查程序的数据及其修改程序.开发者也可以单不执行逐行进行检查程序.说明:Xcode使用的调试器就是GDB,GDB是GNU项目的一部分, 它可以在很多不同平台上使用.若开发者愿意,也可以通过命令行来运行它,GDB有者完善的文档系统,尽管它的文档有些难于理解并且网络上流传者好几个版本 的GDB教程.
17.精巧的调试符号:打算调试程序时,需要确保开发者正在使用Debug生成配置.可以通过Xcode工具栏中的弹出菜单Active Build Configuration来检验.Debug配置告诉编辑器发出额外的调试器符号,而调试器通过这些符号可以知道程序在什么地方都有写什么.同时,还要 确认程序是用调试器来运行的,在Xcode里有两种运行程序的方法,选择菜单Run->Run或者按快捷键command+R,将会不使用调试器运 行程序,若要使用调试器,选择菜单Run->Go(Debug)、Run->Debug,或者按快捷键command+Y.说明:多线程编程 是一种同时处理多个执行流的编程方式,正确应用它是很困难的,通常,多线程编程所产生的错误非常难于找到,如果有人告诉你多线程很容易,那么他们不是被骗 了或者试图向你推销什么东西。下面介绍是4个控件:第一个控件看起来cd机的开始按钮.,安继续键可以使用command+option+p。单击它之 后,程序会接着运行到遇见下一个断点,然后结束或者崩溃.第二个控件看起像跳过按钮使用的快捷键是command+option+O.单击这个控件之后它 就会执行下一行,然后又会吧程序控制权交还给开发者,第三个按钮,向下指向一个点的箭头,它是跳入按钮(也可以使用快捷键:键盘右上角的 键+command+I),这个按键的功能就是跳入方法内部,显示其代码,最后箭头设置在代码的起始位置.第四个按钮是跳出按钮,快捷键是 command+右上角的键+T,单击它会终止当前运行的函数并且程序会停在调用程序的下一行代码.若是在试验当中,那么就没有必要在试验当中按这个键 了。再下一个按钮(又一个喷雾罐的方框)是用来打开Xcode调试窗口的,再下一个按钮用来打开GDB控制台,开发者可以再这个调试器种直接输入调试命 令.最后一个控件是显示调用栈的弹出菜单,调用栈是当前处于活动状态的函数的集合,如果A调用B,B调用C,那么C就位于栈的顶部.再更为复杂的程序中, 这种调用栈也称为栈跟踪。
|
|