Xcode基本操作.docx
- 文档编号:13583757
- 上传时间:2023-06-15
- 格式:DOCX
- 页数:8
- 大小:23.40KB
Xcode基本操作.docx
《Xcode基本操作.docx》由会员分享,可在线阅读,更多相关《Xcode基本操作.docx(8页珍藏版)》请在冰点文库上搜索。
Xcode基本操作
2.偏好设置通过“command+,”快捷键或”Xcode|Preferences”菜单呼出偏好设置。
(1)主题及字体(Preferences->Fonts&Colors)选中一种主题(theme),例如“Midnight”,然后shift选择SourceEditor/Console中的所有项,点击Fonts设置字体。
Xcode默认字体为menlo,可选Consolas、Monaco等其他等宽字体。
(2)文本编辑配置(Preferences->TextEditing)Editing:
ShowLineNumbers:
在gutter中显示行号。
Codefoldingribbon:
显示折叠ribbon。
Pageguideatcolumn:
显示一行最多支持80个字符的提示分割线。
Indentation:
Preferindentusing:
Spaces(为保持一致的视觉呈现和行末注释对齐,建议使用空格)Tabwidth:
4spaces(tabexpand,1个tab=4个空格)Indentwidth:
4spaces(自动缩进步长=4个空格)(3)SCM(Preferences->SourceControl)EnableSourceControl:
启用/禁用XCode自带SourceControlManager(SCM)。
(4)SDK/Simulator(Preferences->Downloads)Downloads->Components:
可下载SDK和Simulator。
(5)构建输出目录(Preferences->Locations->Locations)当选择为Default时,DerivedData的目录为~/Library/Developer/Xcode/DerivedData。
当选择为Relative时,DerivedData的目录为当前.xcodeproj所在的目录。
当选择为Custom时,DerivedData的目录需自定义。
不建议使用绝对路径,因为写死之后,换环境或换平台,又要重新修改路径,建议使用相对路径(Relative)。
3.代码阅读
(1)ViewNavigatorcommand+0:
Show/Hidelefttoolpanelcommand+1-8:
Project/Symbol/Find/Issue/Test/Debug/Breakpoint/LogNavigatoroption+command+0:
Show/Hiderighttoolpaneloption+command+1/2:
showthefile/quickhelpinspector
(2)ViewEditorOrganizationcontrol+1:
ShowRelatedItems(例如Superclasses/Subclasses、Callers/Callees、ProtocolImplementor/Implemented、Includes/IncludedBy)。
可输入实时搜索匹配。
control+2/3:
ShowPrevious/NextHistory。
可输入实时搜索匹配。
control+4:
ShowTopLevelItems。
control+5:
ShowGroupFiles(当前文件夹内的所有文件)。
可输入实时搜索匹配。
control+6:
ShowDocumentItems(当前文件的Symbols)。
可输入实时搜索匹配。
可直接选中符号,然后“Navigate->RevealinSymbolNavigator”,打开该接口的符号列表。
(3)FocusSwitchcommand+J:
焦点切换(MoveFocus),可配合鼠标和方向键。
带‘+’的“Movefocustoanewassistanteditor”可以快速在辅助编辑窗口中打开头文件(*.h)/实现文件(*.m,*.mm)。
shift+command+J:
在项目导航中定位当前文件(RevealinProjectNavigator)。
(4)SymbolJumpcontrol+command+↑/↓:
切换头文件/实现文件(switchbetweenasourcefile(.m,*.mm,*.cc)andtheassociatedheaderfile(.h))。
shift+command+O:
OpenQuickly,可快速查找文件、符号。
command+点击Editor中选中的符号:
跳转到符号定义(jumptodefinition)。
control+command+J:
跳转到指定符号的定义处或实现处(GotoDeclaration/Definition)。
有时工程正在Loading、Indexing或Processingfiles时,“command+点击”无法响应,此时可试试control+command+J。
在ProjectNavigator中选中文件右键或通过菜单“File->ShowinFinder”:
在Finder中定位该文件。
(5)SymbolNavigatorcommand+点击Editor中选中的非单一层次定义符号:
ShowinSymbolNavigator:
filter0:
底部输入符号(showsymbolswithmatchingname)=filter1result+filter3resultfilter1:
showonlyclassandprotocolsymbols(hideotherglobalsymboltypes),包括project和system层次。
filter2:
showonlyproject-definedsymbols,过滤显示当前工程中的符号。
filter2的结果是filter1的子集,较常用。
filter3:
showonlycontainers(hidemembers),过滤显示包含该单词的符号。
(6)Helpoption+点按:
查看选中符号的帮助提示(QuickHelpforSelectedItem)。
option+双击:
打开选中符号的帮助文档。
4.代码编辑
(1)File|Newcontrol+command+N:
File|New|Workspaceshift+command+N:
File|New|Project
(2)TextEditingcommand+[/]:
向前/向后缩进option+command+[/]:
MoveLineUp/Downcommand+/:
注释选中的代码Parentheses/Brackets/BracesMatching:
双击某个分隔符(如()、[]、{}等),Xcode会选中匹配代码块。
(3)EidtorWindow/TabSwitchcommand+shift+[/]:
切换标签页单指左右滑动(control+command+←/→):
在单标签页打开的多个文件间切换(4)CodeFoldingoption+command+←/→:
折叠当前代码块option+shift+command+←/→:
折叠该文件内所有代码块(方法/函数)(5)Console&Schemeshift+command+Y:
显示控制台(Show/Hidethedebugarea)option+command+R:
编辑配置(EditScheme)(6)Gutter&Ribbon焦点列:
灰色深度与代码嵌套深度相关,鼠标悬停可突出显示右侧相应代码块,鼠标单击可折叠右侧相应代码块(CodeFolding)。
说明:
从左到右,依次是“导航窗格(Navigator)->边列(Gutter)->焦点列(FocusRibbon)->代码编辑窗口(StandardEditor)”。
(7)AutoCompletionesc(command+.):
就当前输入上下文呼出/隐藏AutoCompletion提示:
上下方向键在提示中选择选项,enter(return)选中,tab可一截一截匹配;tab可在各个占位符之间移动。
输入Objective-C对象及],自动完成中缀符(infixnatation)包围。
(8)Find&Replacecommand+F:
当前文件查找。
option+command+F:
当前文件替换。
Find:
可指定查找内容(Text/References/Definitions/RegularExpression);放大镜:
下拉可查看最近查找历史;InProject:
查找范围(可指定Group);Text:
匹配规则(可指定Containing,Matching,Startingwith,Endingwith);Case:
是否区分大小写(可指定Matching/Ignoring)。
shift+command+F(command+3):
全局查找。
也可以在选择符号后,右键(control+点击)->FindSelectedTextinworkspace...option+shift+command+F:
全局替换。
Replace:
逐个替换;All:
所有替换;Done:
替换完成。
5.辅助编辑(AssistantEditor)AssistantEditor有点类似VC中的CodeDefinitionWindow。
option+command+enter:
打开AssistantEditor。
command+enter:
关闭AssistantEditor。
使用快捷键进行切换或跳转动作时,若同时按下option可以在辅助编辑窗口中打开相应文件或符号(Foroptionalnavigation(Option-clickingorOption-choosingafile),opensthefileinanewAssistanteditorpane.)。
若在辅助窗口中操作,则在主窗口(StandardEditor)中打开。
option+点击ProjectNavigator中选中的文件:
在辅助编辑窗口中打开选中文件。
option+command+点击Editor中选中的符号:
在辅助编辑窗口中打开符号定义(jumptodefinitioninassistanteditor)。
option+control+command+↑/↓:
在辅助窗口中打开对应的头文件(*.h)/实现文件(*.m,*.mm,*.cc)。
点击查看shift+command+O、shift+command+F(command+3)选中的文件或符号时,可同时按下option在辅助编辑窗口中打开。
在control+1~6中打开选择结果时,均可同时按下option在辅助编辑窗口中打开。
若在按下option的同时按下shift通常会出现一个导航窗格,可选择在newwindow/tab/assistant-editor显示打开。
ForOption-Shiftnavigation(Option-Shift-clickorOption-Shift-chooseafile),Xcodedisplaysagraphicalnavigationchoosershowingthecurrentlayout.Thechooserpromptsyoutoopenthefileinanyopeneditorpaneinanywindowandtab,ortoopenthefileinaneweditorpane,window,ortab.6.环境变量(BuildSettingMacros)
(1)查看环境变量宏命令行进入HelloWorld工程目录,执行xcodebuild命令并带上“-showBuildSettings”参数:
$xcodebuild-projectHelloWorld.xcodeproj-targetHelloWorld-configurationDebug-showBuildSettings>xcodebuild_showBuildSettings.txt则xcodebuild_showBuildSettings.txt中保存了Buildsettingsforactionbuildandtarget“HelloWorld”,其中dump了所有的环境变量。
(2)Xcode5(MacOSX10.9)的部分环境变量约定1:
~=当前账户的HOME目录,例如“/Users/faner”。
约定2:
build构建基础路径:
BUILD_PATH=~/Library/Developer/Xcode/DerivedData/Build。
可通过“File->ProjectSettings”查看DerivedDataLocation。
约定3:
环境变量宏(BuildSettingMacros)引用格式:
${MACRO},同BuildPhasesRunScript中的语法。
下面是摘选自xcodebuild_showBuildSettings.txt的部分常用环境变量。
(a)ARCH&PLATFORM&SDKARCHS=i386CURRENT_ARCH=i386PLATFORM_DIR=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platformPLATFORM_NAME=macosxSDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdkSDK_DIR=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdkSDK_NAME=macosx10.9(b)PROJECT&SOURCEPROJECT=HelloWorldPROJECT_DIR=~/Projects/LearnObjective-C/HelloWorldPROJECT_FILE_PATH=${PROJECT_DIR}/HelloWorld.xcodeprojPROJECT_NAME=HelloWorldSOURCE_ROOT=${PROJECT_DIR}SRCROOT=${PROJECT_DIR}(c)BUILD&CONFIGURATIONBUILD_DIR=BUILD_PATH/ProductsBUILD_ROOT=BUILD_PATH/ProductsBUILT_PRODUCTS_DIR=BUILD_PATH/Products/DebugCONFIGURATION=DebugCONFIGURATION_BUILD_DIR=BUILD_PATH/Products/DebugCONFIGURATION_TEMP_DIR=BUILD_PATH/Intermediates/HelloWorld.build/Debug(d)PRODUCT&TARGETPRODUCT_NAME=HelloWorldPRODUCT_TYPE=com.apple.product-type.tool//ProjectTemplate:
CommandLineToolTARGET_BUILD_DIR=BUILD_PATH/Products/DebugTARGET_NAME=HelloWorld(3)设置环境变量Product->EditScheme(option+command+R)->Arguments->EnvironmentVariables中可以添加自定义环境变量(Name为名称,Value为值)。
7.运行调试
(1)Consoleshift+command+Y:
显示控制台(Show/Hidethedebugarea)shift+command+K:
清除控制台(Clean)
(2)BuildProduct->EditScheme(option+command+R)->Info->BuildConfiguration:
选择生成版本(DebugorRelease)command+B:
构建(Buid)(3)Target一个Target是指在一个Project中构建的一个产品,它包含了构建该产品的所有文件,以及如何构建该产品的配置。
一个定义好构建过程的Target成为一个Scheme,可在Scheme中定义Target的六种构建过程:
Build/Run/Test/Profile/Analyze/Archive。
Product->EditScheme(option+command+R)->ManageSchemes可对Scheme的六种构建过程进行配置(可配置项包括Info、Arguments、Options)。
在ProjectNavigator中选中某个xcodeproj(例如QQ.xcodeproj),将进入ProjectSetting页面,可点击左侧图标show/hideprojectandtargetslist:
点击targets项可分别设置各target的BuildSettings;右击可对target进行delete。
(4)Issue&Errors编译错误(error)和警告(warning)过多时,只显示编译错误:
点击底端的感叹号,即可只显示编译错误,忽略编译警告:
(5)Runcommand+R:
运行(Run),可能会先编译。
若按下control直接运行上次build的product(RunWithoutBuilding)。
command+.:
停止运行(Stop)(6)Breakpointcommand+\:
当前行设置/取消断点;通过鼠标点击蓝色断点来启用/禁用当前行断点。
command+Y:
全局激活或禁用所有的断点,激活进入调试模式(此时断点蓝色可见)。
边列(Gutter)中的断点/警告可右键呼出RevealinBreakpoint/IssueNavigator。
trick:
编辑断点(EditBreakpoint):
Condition:
设置断点的触发条件,例如“i==3”(注意不能有空格)表示当i等于3时该断点才会被触发。
Ignore:
设置断点需要被忽略多少次才会中断,若设置成5则表示第6次遇到该断点时才触发。
Action:
设置断点触发时的动作,可以为DebuggerCommand、LogMessage、ShellCommand或Sound。
例如可设置以下DebuggerCommand:
(1)读取std:
:
stringsig的内存buffer值:
memreadsig.c_str()-csig.size();
(2)打印NSData实例sig:
posig(7)DebugF6:
下一步(StepOver),逐过程单步调试,不进入函数体。
(fn+)F7:
进入(StepInto)函数体。
可能与多媒体键有冲突,故需要fn辅助。
(fn+)F8:
跳出(StepOut)函数体。
可能与多媒体键有冲突,例如呼叫iTunes,故需要fn辅助。
control+command+Y:
逐断点(continue)继续执行。
trick:
移动指令指针(Movetheinstructionpointer):
断点调试运行时,可以将绿色指针箭头(Line47)移动到其他行(Line49)或其他断点(Line51)实现跳转执行。
(8)Watchshift+command+M:
DebugWorkflow->ViewMemory。
command+K:
DebugWorkflow->ClearConsole。
DebugWorkflow->ShowDisassemblyWhenDebugging,可进行汇编指令级调试。
trick:
修改变量内存值(changememoryvaluewhiledebugging):
调试运行时,可以在底部的调试窗口(DebugArea,可通过Shift+Command+Y呼出)右键某个变量,除了可以进行ViewMemory/ViewValueAs之外,还可以选择EditValue运行时编辑内存变量的值。
这种手动设置指定值,在调试某些难以复现的bug或进行边界测试非常有用,可以避免在验证某个问题时反复改值重新编译。
(9)lldb调试命令:
n/next:
stepover;s/step:
stepinto;finish:
stepout;c/continue:
gotonextbreakpoint;expr/expression:
EvaluateaC/ObjC/C++expression(动态执行C/ObjC/C++表达式);p/print/expr/expression:
printasaC/C++basicvariable;po/expr-O/expression-O:
PrintasanObjective-Cobject;call:
调用。
其实上述p/po后接表达式(expression)也有调用的功能,一般只在不需要显式输出,或是无返回值时使用call,用于动态调试插入调用代码。
例如可以在viewDidLoad:
里面设置断点,然后在程序中断的时候输入以下命令:
call[self.viewsetBackgroundColor:
[UIColorredColor]]继续运行程序,view的背景颜色将变成红色!
bt(backtrace),打印当前调用堆栈(crash堆栈),“btall”可打印所有thread的堆栈(相当于command+6的DebugSessionNavigation)。
image:
可用于寻址,有多个组合命令,比较实用的一种用法是寻找栈地址对应的代码(行)位置。
例如某个UITableView总共有2个section,当其引用的currentSection.index≥2时将会引起[UITableViewrectForHeaderInSection:
]调用异常,可使用expr动态改值制造crash场景模拟调试。
此时crash时的控制台bt显示异常出现在应用层代码“0x00d055b8-[FACategoryTableViewFACategorySectionHeaderDidTouched:
]+744”处(其中0x00d055b8为当前栈(代码段)偏移量,744为栈帧偏移量——PC指针相对函数入口的偏移)。
那么具体是FACategoryTableView.m文件哪一行代码调用引起的异常呢?
此时通过“imagelookup--address”后接bt的callstack中的代码段偏移地址(0x00d055b8)即可定位出异常调用的代码行位置。
x/memoryread:
dump指定地址的内存(Readfromthememoryoftheprocessbeingdebugged),后接起止地址或-c指定count加起始地址。
可helpmemread查看帮助:
Syntax:
memoryread[]CommandOptionsUsage:
size指定内存块(block/item)的大小,默认为1byte。
--size):
Thesizeinbytestousewhen
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Xcode 基本 操作