xcode_xcodebuild - CSDN
xcode 订阅
Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由Apple Inc开发。Xcode是开发 macOS 和 iOS 应用程序的最快捷的方式。Xcode 具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。Xcode同时也是一种语言,作为一种基于XML的语言,Xcode可以设想各种使用场景。它提供了一种独立于工具的可扩展的方法来描述编译时组件的各个方面。 [1] 展开全文
Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由Apple Inc开发。Xcode是开发 macOS 和 iOS 应用程序的最快捷的方式。Xcode 具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。Xcode同时也是一种语言,作为一种基于XML的语言,Xcode可以设想各种使用场景。它提供了一种独立于工具的可扩展的方法来描述编译时组件的各个方面。 [1]
信息
外文名
Xcode
适    用
建立 Apple 平台程序
环    境
macOS
更新时间
2020-03-04
属    性
构件描述
版本更新
11.4 beta 3(11N132i)
支持语言
Objective-C、C、C++、Swift……
xcode背景介绍
Xcode前身是NeXT的Project Builder。The Xcode suite 包含有GNU Compiler Collection自由软件 (GCC、 apple-darwin9-gcc-4.0.1 以及 apple-darwin9-gcc-4.2.1, 默认的是第一个),并支持 C语言、C++、Fortran、Objective-C、Objective-C++、Java、AppleScript、Python以及Ruby,还提供Cocoa、Carbon以及Java等编程模式。协力厂商更提供了 GNU Pascal,Free Pascal, Ada, C#, Perl, Haskell 和 D语言。Xcode套件使用 GDB作为其后台调试工具。在Xcode 3 Unleashed中,著名的Mac开发人员Fritz Anderson编写了权威指南,以充分利用Xcode 3来构建任何Macintosh或iPhone应用程序。从Xcode 3.1开始,Xcode也可被用为iPhone OS (iOS)的开发环境。Xcode 4.0于2011年3月9日正式发行。该版本非Apple开发者注册会员亦能从Mac App Store中付费下载, 收取US$4.99的费用。从Xcode 4.1开始,针对OS X 10.6及OS X 10.7用户从Mac App Store免费下载Xcode主要版本是Xcode 5,支持iOS7,可以在Mac App Store免费下载,亦可在iOS开发者计划网站下载。Xcode6整合了苹果在WWDC大会上发布的新语言Swift1.0版本。2015年9月16日,苹果在开发者官网发布Xcode7正式版,并将Swift语言升级到2.0版本。根据斯诺登提供的资料,美国政府研究人员创建了一个版本的苹果软件应用开发工具Xcode,希望借此将监控后门植入到通过苹果应用商店App Store发布的应用程序中。2018年9月18日,苹果在开发者官网发布Xcode10正式版并将Swift语言升级到4.2版本。目前的最新版本为Xcode11,Xcode 11包含创建精彩应用程序和将应用程序带到更多设备所需的一切。 通过支持Swift软件包,Xcode 11允许在所有应用程序之间共享代码或使用社区创建的软件包。 [2] 
收起全文
精华内容
参与话题
  • XCode使用一:Xcode基本操作

    万次阅读 2018-08-22 14:47:18
    1.Xcode IDE概览 说明:从左到右,依次是“导航窗格(Navigator)->边列(Gutter)->焦点列(Ribbon)->代码编辑窗口(Standard/Primary Editor)”。 边列(Gutter):显示行号和断点。 ...

    1.Xcode IDE概览

    说明:从左到右,依次是“导航窗格(Navigator)->边列(Gutter)->焦点列(Ribbon)->代码编辑窗口(Standard/Primary Editor)”。

    边列(Gutter):显示行号和断点。
    焦点列(Ribbon):灰色深度与代码嵌套深度相关:鼠标悬停可突出显示右侧相应代码块(Focus code blocks on hover),鼠标单击可折叠右侧相应代码块(Code folding)。

     

    2.偏好设置

    通过“command+,”快捷键或”Xcode|Preferences”菜单呼出偏好设置。

    (1)主题及字体(Preferences->Fonts & Colors)

    选中一种主题theme),例如“Midnight”,推荐使用MonokaiCiapre。将 `*.dvtcolortheme` 文件拷贝到 `~/Library/Developer/Xcode/UserData/FontAndColorThemes/`即可安装主题, 重启 Xcode 即可选用。

    Xcode默认字体为menlo,也可选择 Consolas、Monaco、Consolas、Droid Sans Mono、Source Code Pro、Bitstream Vera Sans 等其他等宽字体。

    shift 选择主题 Source Editor/Console 中的所有项,点击 Fonts 可更改字体(大小)。

    (2)编辑器配置(Preferences->Text Editing)

    Editing

    • Show Line Numbers:在gutter中显示行号。
    • Code folding ribbon:显示焦点列。

      Focus code blocks on hover:鼠标悬停时突出显示右侧相应代码块。

    • Page guide at column:显示一行最多支持80个字符的提示分割线。

    Indentation

    • Prefer indent using:Spaces(为保持一致的视觉呈现和行末注释对齐,建议使用空格)
    • Tab width:4 spaces(tab expand,1个tab=4个空格)
    • Indent width:4 spaces(自动缩进步长=4个空格)

    (3)跳转打开方式(Preferences->Navigation)

    • Activation:When a tab or window opens,make it active。当新建窗口或标签时,立即激活聚焦。
    • Navigation:Uses Primary/Focused Editor。打开Project Navigator中指定的文件时,在主编辑器窗口/当前聚焦窗口打开,建议选择Focused。
    • Optional Navigation:Uses Single Assistant Editor。打开Project Navigator中指定的文件或跳转到符号定义所在文件(command+单击)时,若按下option键,则在辅助窗口打开。
    • Double Click Navigation:Uses Separate Tab。双击打开Project Navigator中指定的文件或跳转到符号定义所在文件(command+双击)时,新建标签页。

    (4)SCM(Preferences->Source Control)

    • Enable Source Control:启用/禁用Xcode自带Source Control Manager(SCM)。
    • Comparison View:Show local revision in [Right] Side。打开version editor比较窗口时,左侧显示服务器基线版本(base),[右侧]显示本地修改过的工作拷贝(local working copy)。

    (5)SDK/Simulator(Preferences->Downloads)

    Downloads:可下载Components(SDK&Simulator)和Documentation。

    (6)构建输出目录(Preferences->Locations->Locations)

    • 当选择为Default时,Derived Data的目录为~/Library/Developer/Xcode/DerivedData。
    • 当选择为Relative时,Derived Data的目录为当前*.xcodeproj所在的目录。
    • 当选择为Custom时,Derived Data的目录需自定义。

    不建议使用绝对路径,因为写死之后,换环境或换平台,又要重新修改路径,且同名project target的build folder会覆盖,建议使用相对路径(Relative

    3.代码阅读

    (1)Help

    option+点按:查看选中符号的帮助提示(Quick Help for Selected Item)。

    option+双击:打开选中符号的帮助文档。

    (2)View Navigator

    command+0:Show/Hide left tool panel(Navigator Area)

    command+1-8:Project/Symbol/Find/Issue/Test/Debug/Breakpoint/Report Navigator

    option+command+0:Show/Hide right tool panel(Utility Area)

    option+command+1/2:show the file/quick help inspector

    可按下command+0隐藏左侧栏Navigator,再按下option+command+0隐藏右侧栏Utility,只显示Standard/Primary Editor,聚焦有效利用屏幕进行编码。

    (3)View Editor Organization

    control+1:Show Related Items(例如Superclasses/Subclasses、Callers/Callees、Protocol Implementor/Implemented、Includes/Included By)。可输入实时搜索匹配。

    control+2/3:Show Previous/Next History。可输入实时搜索匹配。

    control+4:Show Top Level Items。
    control+5:Show Group Files(当前文件夹内的所有文件)。可输入实时搜索匹配。

    control+6:Show Document Items(当前文件的Symbols)。可输入实时搜索匹配。

    (4)Eidtor Window/Tab Switch

    command+shift+[/]:切换标签页

    单/双指左右滑动(control+command+←/→):在单标签页打开的多个文件间切换(Go Back/Forward)

    (5)Symbol Jump

    command+L:跳转到指定行。

    shift+command+O:Open Quickly,快速全局查找文件、符号,非常常用!

    command+点击Editor中选中的符号:跳转到符号定义(jump to definition)。

    control+command+J:跳转到指定符号的定义处或实现处(Go to Declaration/Definition)。有时工程正在Loading、Indexing或Processing files时,“command+点击”无法响应,此时可试试control+command+J。

    control+command+↑/↓:切换头文件/实现文件(switch between a source file (.m,*.mm,*.cc) and the associated header file(.h),Jump to Previous/Next Counterpart)。

    在Project Navigator中选中文件右键或通过菜单“File->Show in Finder”:在Finder中定位该文件。

    (6)Symbol Navigator

    command+2可聚焦左侧导航栏中的符号导航器。

    • filter0:底部编辑框输入符号(show symbols with matching name)= filter1 result+filter3 result
    • filter1:show only class and protocol symbols (hide other global symbol types),包括project和system层次。
    • filter2:show only project-defined symbols,过滤显示当前工程中的符号。filter2的结果是filter1的子集,较常用。
    • filter3:show only containers(hide members),过滤显示包含该单词的符号。

    注意:control+6只列出当前代码所在interface的符号,而Symbol Navigator是当前工程(Project Scope)的所有符号列表的Hierarchy,符号种类包括Classes/Protocols/Functions/Structs/Unions/Enums/Types/Globals。

    编辑器中光标所在符号处,Navigate菜单或右键快捷菜单可[Reveal in Symbol Navigator],在符号导航器中定位当前符号,亦可查看当前符号所属类的层次。

    (7)Code Folding

    option+command+←/→:折叠当前代码块,包括@interface …@end、@implementation …@end

    option+shift+command+←/→:折叠该文件内所有代码块(方法/函数:Methods&Functions }

    control+shift+command+←/→:折叠当前注释块(/*Comment Blocks*/)

    (8)Focus Switch

    (shift+)option+command+`:MoveFocus to (Previous)Next Area.

    command+J:焦点切换(Move Focus),可配合鼠标和方向键。带‘+’的“Move focus to a new assistant editor”可以快速在辅助编辑窗口中打开头文件(*.h)/实现文件(*.m,*.mm)。

    shift+command+J:在项目导航中定位当前编辑其中打开的文件(Reveal in Project Navigator)。

    4.代码编辑

    (1)File | New

    control+command+N:File | New | Workspace

    shift+command+N:File | New | Project

    (2)Text Editing

    command+X/C/V:剪切/复制/粘贴

    command+Z(+shift):撤销(重做)/Undo(Redo)

    command+[/]:向前/向后缩进(Shift Left/Right)

    option+command+[/]:将当前光标所在行代码上移/下移一行(Move Line Up/Down)

    command+/:以双斜杠(//)注释选中的代码,再此按下可取消

    Parentheses/Brackets/Braces Matching:双击某个分隔符(如()、[]、{} 等),Xcode会选中匹配代码块

    Editor→Structure→Balance Delimiter:根据当前光标代码所在位置,自动向外扩展选择外层代码块。

    (3)Auto Completion

    esc(control+.)就当前输入上下文呼出/隐藏智能提示列表(Auto Completion List);

    上下方向键(↑/↓)在智能提示列表中选择选项。当然,也可以用control+.;enter选中列表中备选的消息符号;

    tab在輸入符号不完整时可一截一截匹配;选中消息符号后,tab可在各个参数占位符之间移动,enter可选中参数占位符先临时补位填充。

    输入Objective-C对象及消息名,然后输入 ],自动补充对象名左侧的[,完成中缀符(infix natation)包围。

    (4)Find菜单(control+单击)

    当鼠标定位或选中某个符号时,可呼叫右键快捷菜单

    • Find Selected Text in Workspace:在当前工作空间查找选中文本或光标所在行的OC冒号分割方法名。
    • Find Selected Symbol in Workspace:在当前工作空间查找选中文本符号或光标所在行的OC冒号分割方法符号。
    • Find Call Hierarchy:查找选中文本符号或光标所在行的OC冒号分割方法符号的调用着(Callers)。

    对应Find菜单中有Find Selected Text in Project、Find Selected Symbol in Project(control+shift+command+F)、Find Call Hierarchy(control+shift+command+H)。

    说明:Find Call Hierarchy等效于control+1|Callers。

    (5)Find & Replace

    command+F:当前文件查找。

    shift+command+F(command+3):在Find Navigator中全局查找。可在[Preferences-General]中设置Find Navigator Detail的显示行数(当Navigator Area较窄挤压时)。

    • Find:可指定查找内容(Text/References/Definitions/Regular Expression);
    • 放大镜:下拉可查看最近查找历史;
    • In Project:查找范围(可指定Group);
    • Text:匹配规则(可指定Containing,Matching,Starting with,Ending with);
    • Case:是否区分大小写(可指定 Matching/Ignoring)。

    对于查找出来的结果可以delete删除非预期干扰结果条目,也可以多择或全选Find Results拷贝出来整理分析。

    option+command+F:当前文件替换。

    option+shift+command+F:在Find Navigator中全局替换。

    • Replace:逐个替换;
    • All:所有替换;
    • Done:替换完成。

    (6)Copy Symbol

    例如,光标停留在NSMutableArray的insertObject:atIndex的前半截单词insertObject上时:

    有三种复制方式:

    • command+C:Copy(光标所在位置的单词):insertObject
    • control+shift+command+C:Copy Symbol Name(光标所在位置的消息符号名称):-insertObject:atIndex:
    • option+control+shift+command+C:Copy Qualified Symbol Name(光标所在位置的消息符号全名,带所属类名):-[NSMutableArray insertObject:atIndex:]

    通过后两种快捷方式,可以便捷地复制Objective-C特殊的冒号分隔的消息符号名称。

    (7)Open with External Editor——SublimeText

    <1>在左侧导航栏(Project Navigator)中选中某个文件右键快捷菜单中有【Open with External Editor】,默认呼叫Mac OS X自带的文本编辑器(TextEdit)打开。我们可以按照以下步骤设置快捷键:

    • 【系统偏好设置(System Preferences)->键盘(Keyboard)->快捷键(Shortcuts)->应用快捷键(App Shortcuts)】,
    • 点击+号,选择应用程序【Xcode.app】
    • 准确填写[菜单标题],即菜单命令名称【Open with External Editor】,聚焦[键盘快捷键]编辑框时,同时按下想要设置的组合键即可,例如option+command+O(⌥⌘O)。

    可针对Xcode工程代码文件(*.h/*.hh/*.c/*.cc/*.m/*.mm)设置默认打开程序为Sublime Text.app:右键Get Info(command+I),Open With选择Sublime Text.app并且Change All。然后,Xcode|Open with External Editor将在Sublime Text打开选中文件。

    <2>另外,可下载安装OpenInSublimeText插件,支持呼叫SublimeText打开Xcode当前正在编辑的文件。

    • 从github下载打开OpenInSublimeText.xcodeproj工程进行编译(command+B),生成的插件OpenInSublimeText.xcplugin将被集成到Xcode插件目录(~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins)下。
    • 重启Xcode将警告提示Unexpected code bundle "OpenInSublimeText.xcplugin",忽略警告选择[Load Bundle]即可。
    • Xcode Editor菜单中将新增[Open In Sublime Text]项,可设置其快捷键位为shift+command+S(⇧⌘S)。

    5.辅助编辑(Assistant Editor)

    (1)打开/关闭辅助编辑窗口

    Assistant Editor有点类似VC中的Code Definition Window,可实现分屏查看代码Counterpart,方便交叉参考代码编辑。

    • option+command+enter/,打开Assistant Editor。
    • command+enter关闭Assistant Editor。

    可通过菜单[View|Assistant Editor]设置Assistant Editors的方向,例如On Right。

     

    (2)呼叫辅助编辑窗口(option+)

    Mac OS X日常操作中,我们已经认识到option这把单刀双掷开关的妙用:按住鼠标移动或三指触控移动时,按下option键可实现竖直块选;调节音量/亮度时,按住option+shift 可以四分之一单位微调。

    使用Xcode快捷键进行切换或跳转动作时,若同时按下option可以在辅助编辑窗口中打开相应文件或符号(For optional navigation (Option-clicking or Option-choosing a file), opens the file in a new Assistant editor pane.)。若在辅助窗口中操作,则在主窗口(Standard Editor)中打开。

    • option+点击Project Navigator中选中的文件:在辅助编辑窗口中打开选中文件。
    • option+command+点击Editor中选中的符号:在辅助编辑窗口中打开符号定义(jump to definition in assistant editor)。
    • option+control+command+↑/↓:在辅助窗口中打开对应的头文件(*.h)/实现文件(*.m,*.mm,*.cc)。

    点击查看shift+command+O、shift+command+F(command+3)选中的文件或符号时,可同时按下option在辅助编辑窗口中打开。

    在control+1~6中打开选择结果时,均可同时按下option在辅助编辑窗口中打开。

     

    (3)导航窗格(option+shift+)

    在Xcode以上种种切换跳转操作时,按下option的同时按下shift,通常会呼出一个导航窗格(option+command+<),可选择在new window/tab/assistant-editor打开显示。

     

    For Option-Shift navigation (Option-Shift-click or Option-Shift-choose a file), Xcode displays a graphical navigation chooser showing the current layout. The chooser prompts you to open the file in any open editor pane in any window and tab, or to open the file in a new editor pane, window, or tab.

    6.环境变量(Build Setting Macros

    (1)查看环境变量宏

    命令行进入HelloWorld工程目录,执行xcodebuild命令并带上“-showBuildSettings”参数:

    xcodebuild -project HelloWorld.xcodeproj -target HelloWorld -configuration Debug -showBuildSettings > xcodebuild_showBuildSettings.txt

    xcodebuild_showBuildSettings.txt中保存了Build settings for action build and target "HelloWorld”,其中dump了所有的环境变量。

    (2)Xcode5(Mac OS X 10.9)的部分环境变量

    约定1:~=当前账户的HOME目录,例如“/Users/faner”。

    约定2:build构建基础路径BUILD_PATH = ~/Library/Developer/Xcode/DerivedData/Build。可通过“File->Project Settings”查看Derived Data Location

    约定3:环境变量宏(Build Setting Macros)引用格式:${MACRO},同Build Phases Run Script中的语法。

    下面是摘选自xcodebuild_showBuildSettings.txt的部分常用环境变量。

    (a) ARCH & PLATFORM & SDK

    ARCHS = i386

    CURRENT_ARCH = i386

    PLATFORM_DIR = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform

    PLATFORM_NAME = macosx

     

    SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk

    SDK_DIR = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk

    SDK_NAME = macosx10.9

    (b) PROJECT & SOURCE

    PROJECT = HelloWorld

    PROJECT_DIR =~/Projects/Learn Objective-C/HelloWorld

    PROJECT_FILE_PATH =${PROJECT_DIR}/HelloWorld.xcodeproj

    PROJECT_NAME = HelloWorld

     

    SOURCE_ROOT =${PROJECT_DIR}

    SRCROOT =${PROJECT_DIR}

    (c) BUILD & CONFIGURATION

    BUILD_DIR =BUILD_PATH/Products

    BUILD_ROOT =BUILD_PATH/Products

    BUILT_PRODUCTS_DIR =BUILD_PATH/Products/Debug

     

    CONFIGURATION = Debug

    CONFIGURATION_BUILD_DIR =BUILD_PATH/Products/Debug

    CONFIGURATION_TEMP_DIR =BUILD_PATH/Intermediates/HelloWorld.build/Debug

    (d) PRODUCT & TARGET

    PRODUCT_NAME = HelloWorld

    PRODUCT_TYPE = com.apple.product-type.tool// Project Template: Command Line Tool

     

    TARGET_BUILD_DIR =BUILD_PATH/Products/Debug

    TARGET_NAME = HelloWorld

    (3)设置环境变量

    Product -> Edit Scheme(option+command+R)->Arguments->Environment Variables中可以添加自定义环境变量(Name为名称,Value为值)。

    在Xcode|Build Phases中Add Run Script Build Phase的Run Script将会使用到环境变量。

    7.构建配置

    (1)Target & Scheme

    一个Target是指在一个Project中构建的一个产品,它包含了构建该产品的所有文件,以及如何构建该产品的配置。
    一个定义好构建过程的Target成为一个Scheme,可在Scheme中定义Target的六种构建过程:Build/Run/Test/Profile/Analyze/Archive。

     

    • Run 为编译运行调试;
    • Build 为只编译不运行;
    • Analyze 用于进行静态代码分析,可检测潜在的内存泄露(不对称 retain/release 导致的 Potential Leak)或野指针(Use of memory after it is freed)问题。编译时可选择 Build Configuration 为 Debug 沿用证书配置;
    • Profile 将调起 Instruments 工具进行动态代码分析,例如 使用 Allocations/Leaks 动态跟踪分析内存泄露。编译时可选择 Build Configuration 为 Debug沿用证书配置;
    • Test 用于运行测试,模拟器会启动并执行测试套件;
    • Archive 可以Export as Xcode Archive,然后将 .archive 中的 .app 拖入 itunes 可 打包生成 ipa 包

     

    Product ->Edit Scheme(编辑配置,快捷键为 option+command+R 或 shift+command+,/command+<)->Manage Schemes可对Scheme的六种构建过程进行配置(可配置项包括Info、Arguments、Options)。

    在 Project Navigator 中选中某个 xcodeproj(例如 QQ.xcodeproj),将进入 Project Setting 页面,可点击左侧图标 show/hide project and targets list:

    点击 targets 项可分别设置各 target 的 Build Settings;右击可对 target 进行 delete。

    (2)Build Settings

    Architectures:Supported Platforms(OS X、iOS),Base SDK,(Valid)Architectures(armv7、arm64、i386)。

     

    • Build Active Architecture Only:一般Debug会选择YES,表示只是编译连接调试的目标真机对应的CPU指令集;对于Release Archive版本,需要选择NO,这样编译出来的安装包才能同时支持在armv7、arm64机型上安装。

     

    Build Locations:配置构建目录,包括Intermediate Build Files Path、Build Products Path及其针对Per-Configuration的配置。

    Build Options:

    • Compiler for C/C++/Objective-C默认时Apple LLVM 7.0;
    • Debug Information Format:真机连接调试时,可断点定位跟踪调试,可选择DWARF以加快编译速度;但是真机断开Xcode运行出现crash时,没有调试符号将无法逆向解析定位出问题的代码符号及其所在具体位置,故一般要选择DWARF with dSYM File。
    • 此外还包括Bitcode和Testability两个使能开关。

    Code Signing:包括Entitlements、Identity和Provisioning Profile,详情参考《iOS Provisioning Profile(Certificate)与Code Signing详解》。

    Deployment:配置发布及安装选项。

    Linking

     

    • Dead Code Stripping:一般对Debug关闭,对Release版本开启以去除无效路径僵尸代码,压缩安装包体积。
    • Display Mangled Names(LINKER_DISPLAYS_MANGLED_NAMES):针对C++ symbols,ld --no-demangle链接开关,一般选择NO。
    • Mach-O type:Static Library、Dynamic Library、Executable、Bundle、Relocatable Object File(Position-Dependent )。
    • Other Linker Flags:例如fobjc-arc(可在Build Rules中针对单个文件配置ARC开关)、-force_load。
    • Write Link Map File:写LinkMap文件。
    • Path to Link Map File:指定链接LinkMap文件路径。

     

    Packaging

     

    • Info.plist File:指定plist文件,对应顶部Info标签。
    • Product Name:为应用名称,例如QQ。
    • Wrapper Extension:为应用扩展,例如app。

     

     

    Search Paths

     

    • Info.plist File:指定plist文件,对应顶部Info标签。
    • Framework Search Paths: *.framework搜索路径。
    • Header Search Paths:*.h/*.hh头文件搜索路径。
    • Library  Search Paths:静态库、动态库搜索路径。

     

    Apple LLVM 7.0配置
    ⭐️Code Generation:

    •     Generate Debug Symbols:YES
    •     Optimization Level:优化级别,-Os

    ⭐️Custom Complier Flags:
    ⭐️Language

    •     language-Objective-C:Objective-C Automatic Reference Counting,ARC开关。

    ⭐️Preprocessing:定义Preprocessor Macros,例如DEBUG、NDEBUG=1。
    ⭐️Warning Policies:例如可以提高警告级别当作错误(Treat Warnings as Errors:YES)。

     

     

    (3)Build Phases

     

    Target Dependencies:设置依赖target。

    Copy Bundle Resources:拷贝的资源文件。

    Compile Sources:该target需要编译的源代码文件。可输入搜索源代码文件名(xxx.mm),查看或编辑其编译选项(Compiler Flags),例如 -fobjc-arc 表示 ARC(__has_feature(objc_arc))。

    Link Binary with Libraries:需要链接的库(*.a、*.framework)。

    Embed App Extensions:该APP对应的扩展插件。

    可以点击加号,New Run Script Phase,配置custom actions after compiling the Xcode project,相当于Visual Studio的Post-builtstep。

    当然,也可以在Edit Scheme中设置Pre-actions(custom actions after compiling the Xcode project)、Post-actions(将在编译链接完成后执行脚本)。

    以下Shell脚本将生成的二进制(Unix executable)文件HelloWorld拷贝到~/Software,然后cd到该目录下并执行HelloWorld:

    (4)Build

    shift+command+K:清除products|debug或release下的Unix executable文件。

    option+shift+command+K:删除构建目录(Delete/Clean Build Folder),清理Derived Data对应target目录下的Build文件夹(包括intermediate和products)。通常用于重新编译整个工程,尝试解决增量编译时部分符号陈旧导致链接不通过的问题。

    Product -> Edit Scheme(option+command+R)->Info->Build Configuration:选择生成版本(Debug or Release)

    command + B:构建(Buid)

    command+8可聚焦左侧导航栏中的日志报告导航器,其中可以查看Build日志。

    (5)Issue & Errors

    command+4可定位Issue Navigator:

    当编译错误(error)和警告(warning)过多时,点击底端的感叹号,即可忽略编译警告,只显示编译错误

    (6)Run

    command + R:运行(Run),可能会重新编译链接。

    option+command + R:如果确定代码没有改动,加option键可免重新编译链接,直接运行上次build成功的product(Run Without Building)。

    command + .:停止运行(Stop)。

     

    (7)Devices & Destination

     

    定义好Target构建配置后,接下来需要指定目标机编译。

    目标机的iPhoneOS.platform必须>=Deployment Target,且Xcode必须支持该机型:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/目录下必须含有对应iOS系统版本的DeveloperDiskImage.dmg,否则真机编译会提示Could not find developer disk image

    shift+command+2:可以查看当前连接的Device和支持的Simulator。

    control+option+command+[/]:Select Previous/Next Destination,在连接多个真机或模拟器之间切换。

    8.运行调试

    (1)Console

    shift+command+Y:显示控制台(Show/Hide the debug area)

    shift+command+C:激活聚焦控制台,光标定位到控制台呈可输入状态

    command+K:清除控制台(Debug->Debug Workflow->Clear Console)

    可安装BBUDebuggerTuckAway插件,在打字coding时,自动隐藏调试控制台

    (2)Breakpoint

    command + \:当前行设置/取消断点;通过鼠标点击边列中的蓝色断点来启用/禁用当前行断点。

     

    command + Y:全局激活或禁用所有的断点,激活进入调试模式(此时断点蓝色可见)。

     

    边列(Gutter)中的断点/警告可右键呼出Reveal in Breakpoint/Issue Navigator。

    trick:编辑断点(Edit Breakpoint):

    Condition:设置断点的触发条件,例如“i==3”(注意不能有空格)表示当i等于3时该断点才会被触发。

    Ignore:设置断点需要被忽略多少次才会中断,若设置成5则表示第6次遇到该断点时才触发。

    Action:设置断点触发时的动作,可以为Debugger Command、Log Message、Shell Command或Sound。

    例如可设置以下Debugger Command:

    [1]读取std::string sig的内存buffer值:mem read sig.c_str() -c sig.size();

    [2]打印NSData实例sig:po sig

    (3)Debug

    F6:下一步(Step Over),逐过程单步调试,不进入函数体。

    (fn+)F7:进入(Step Into)函数体。可能与多媒体键有冲突,故需要fn辅助(建议将功能键F1-F12设置为标准的功能键)。

    (fn+)F8:跳出(Step Out)函数体。可能与多媒体键有冲突,例如呼叫iTunes,故需要fn辅助。

    control+command+Y:逐断点继续执行(Pause/Continue)。

    control+command+C:执行到当前光标所在行(Continue to current line)。

     

    trick:移动指令指针Move the instruction pointer):

    断点调试运行时,可以将绿色指针箭头(Line 47)移动到其他行(Line 49)或其他断点(Line 51)实现跳转执行。

    command+8可聚焦左侧导航栏中的日志报告导航器,其中可以查看Debug日志。

    (4)Watch

    shift+command+M:Debug Workflow->View Memory

    Debug Workflow->Show Disassembly When Debugging,可进行汇编指令级调试。

    trick:修改变量内存值change memory value while debugging):

    调试运行时,可以在底部的调试窗口(Debug Area,可通过Shift+Command+Y呼出)右键某个变量,除了可以进行View Memory/View Value As之外,还可以选择Edit Value运行时编辑内存变量的值。

    在调试验证某些难以复现的bug或进行边界测试时非常有用,可减少每次修改测量样本值(hardcode)重新编译链接的痛苦。

    (5)lldb调试命令

    • n/next:step over,等效于F6;
    • s/step:step into,等效于(fn+)F7;
    • finish:step out,等效于(fn+)F8;
    • c/continue:goto next breakpoint,等效于^⌘Y;
    • expr/expression:Evaluate a C/ObjC/C++ expression(动态执行C/ObjC/C++表达式);
    • p/print/expr/expression:print as a C/C++ basic variable;

    // 打印SYSTEM_VERSION(可能要加UIDevice*转换)

    (lldb)p [[[UIDevicecurrentDevice] systemVersion] doubleValue]

    • po/expr -O/expression -O:Print as an Objective-C object;

    // 打印屏幕bounds(可能要加UIScreen*转换)

    (lldb)po NSStringFromCGRect([[UIScreen mainScreen] bounds]) 

    // 打印状态栏frame(可能要加UIApplication*转换)

    (lldb)po NSStringFromCGRect([UIApplication sharedApplication].statusBarFrame)

    // 打印当前keyWindow的根视图(可能要加UIViewController*转换)

    (lldb)po [[[UIApplication sharedApplication] keyWindow] rootViewController]

    • call:调用。其实上述p/po后接表达式(expression)也有调用的功能,一般只在不需要显式输出,或是无返回值时使用call,用于动态调试插入调用代码。
      例如可以在viewDidLoad:里面设置断点,然后在程序中断的时候输入以下命令:

    // 调用后,继续运行程序,view的背景色将变成红色

    (lldb) call [self.view setBackgroundColor:[UIColor redColor]]

    • bt(backtrace),打印当前调用堆栈(crash堆栈),“bt all”可打印所有thread的堆栈(相当于command+6的Debug Session Navigation)。
    • image:可用于寻址,有多个组合命令,比较实用的一种用法是寻找栈地址对应的代码(行)位置。
      例如某个UITableView总共有2个section,当其引用的currentSection.index≥2时将会引起[UITableView rectForHeaderInSection:]调用异常,可使用expr动态改值制造crash场景模拟调试。
      此时crash时的控制台bt显示异常出现在应用层代码“0x00d055b8 - [FACategoryTableView FACategorySectionHeaderDidTouched:] +744”处(其中0x00d055b8为当前栈(代码段)偏移量,744为栈帧偏移量——PC指针相对函数入口的偏移)。
      那么具体是FACategoryTableView.m文件哪一行代码调用引起的异常呢?此时通过“image lookup --address”后接bt的call stack中的代码段偏移地址(0x00d055b8)即可定位出异常调用的代码行位置。
    • x/memory read:dump指定地址的内存(Read from the memory of the process being debugged),后接起止地址或-c指定count加起始地址。可help mem read查看帮助:

    Syntax

    memory read <cmd-options> <address-expression> [<address-expression>]

    Command Options Usage:

    size指定内存块(block/chunk)的大小

        --size <byte-size> ):The size in bytes to use when displaying with the selected format.

    count指定内存块(block/item)的个数,可配合起始地址使用。

        -c <count> ( --count <count> ):The number of total items to display.

    format指定内容显示格式,格式符同print:c-char,s-string,d-decimal,x-hex。

        -f <format> ( --format <format> ):Specify a format to be used for display.

    Command Samples:

    (a)起止地址,以下基于起始地址偏移量指定截至地址。

    (lldb)mem read 0x10b88f0c 0x10b88f0c+9

    0x10b88f0c: 39 38 37 36 35 34 33 32 31                       987654321

    (b)可在起始地址后使用-c指定需要dump的字节数,以上等效:

    (lldb)mem read 0x10b88f0c -c 9

    0x10b88f0c: 39 38 37 36 35 34 33 32 31                       987654321

    (c)起始地址+内存块size+内存块count(dump hex format)

    (lldb)memory read -s 1 -f x -c 9 0x10b88f0c

    0x10b88f0c: 0x39 0x38 0x37 0x36 0x35 0x34 0x33 0x32

    0x10b88f14: 0x31

    说明:dump的memory chunk为1byte,以上总共dump了chunk size*chunk count=9byte。

    (d)起始地址+内存块size+内存块count(dump char format)

    (lldb)memory read -s 1 -f c -c 9 0x10b88f0c

    0x10b88f0c: 987654321

    (e)起始地址+内存块size+内存块count(dump string format)

    (lldb)mem read 0x10b5cf2c -f s -c 1

    0x10b88f0c: "987654321"

    (f)起始地址+内存块size+内存块count(dump int format)

    (lldb)memory read -s 4 -f x -c 3 0x10b88f0c

    0x10b88f0c: 0x36373839 0x32333435 0x109f0031

    说明:以上指定chunk尺寸为4byte(-s  4),chunk数量为3,共dump了12个byte。

    • memory write:改写指定地址的内存(Write to the memory of the process being debugged)。可自行help mem write查看帮助:

    Syntax: memory write <cmd-options> <address> <value> [<value> [...]]

     

    trick:lldb打印无效问题

    在使用LLDB调试命令p/po打印C类型(包括复合类型)或Objective-C对象时,可能会遇到属性不存在或类型不匹配的问题。

    例1——断点调试,打印当前UIViewController的frame:

    • 由于Xcode lldb本身的bug,对属性的点引用有时会无法识别,例如执行(lldb) p self.view.frame报错:property 'frame' not found on object of type 'UIView *'
    • 将对属性的点引用改为对属性的getter调用,执行(lldb) p [self.view frame]依旧报错:no known method '-frame'; cast the message send to the method's return type
    • 由于Xcode lldb本身的bug,对返回的复合类型也无法直接识别,此时可采用显示类型转换,执行(lldb) p (CGRect)[self.view frame]不会报错!

    例2——断点调试,打印当前UIViewController的navigationController堆栈和childViewControllers数组:

    点引用报错写法(property not found):(lldb) po self.navigationController.viewControllers

    调用getter正确打印:(lldb) po [[self navigationController] viewControllers]

    点引用报错写法(property not found):(lldb) po self.childViewControllers

     

    调用getter正确打印:(lldb) po [self childViewControllers]

    (6)启用NSZombieEnabled调试EXC_BAD_ACCESS

    当你对已释放的对象发送消息(90%的可能是对引用计数为0的对象再release)或release那些autorelease对象时,就会出现报EXC_BAD_ACCESS这样的错误。
    默认设置下 Xcode不会给你定位具体是哪一行代码不该去使用已释放的对象,或者release用错了。
    Product -> Edit Scheme(option+command+R) -> Diagnostics ,勾选“Objective-C”之后的“Enable Zombie Objects”。
    设置NSZombieEnabled环境变量后,一个对象销毁时会被转化为_NSZombie;设置NSZombieEnabled后,当你向一个已经释放的对象发送消息,这个对象就不只是报EXC_BAD_ACCESS Crash,还会放出一个错误消息,然后以一种可预测的可以产生debug断点的方式消失, 因此我们可以找到具体或者大概是哪个对象被错误的释放或引用了。
    注意:NSZombieEnabled只能在调试的时候使用,千万不要忘记在产品发布的时候去掉,因为NSZombieEnabled不会真正去释放dealloc对象的内存,一直开启后果自负!

    展开全文
  • 摘要:本次的IOS开发入门学习中,Xcode使用教程详细讲解是本文要介绍的内容,Xcode是一个款强大的IDE开发环境,就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac程序提供环境。因此,如果你要成为Mac ...

    摘要:本次的IOS开发入门学习中,Xcode使用教程详细讲解是本文要介绍的内容,Xcode是一个款强大的IDE开发环境,就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac程序提供环境。因此,如果你要成为Mac 程序的开发者,灵活运用Xcode工具是你必须做的第一步。希望对大家学习IOS开发入门有所帮助。

     

    本次的IOS开发入门学习中,Xcode使用教程详细讲解是本文要介绍的内容,Xcode是一个款强大的IDE开发环境,就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac程序提供环境。因此,如果你要成为Mac 程序的开发者,灵活运用Xcode工具是你必须做的第一步。希望对大家学习IOS开发入门有所帮助。

    1)我们写程序时常常在源文件的头部添加copyright声明以及公司名称等等;而Xcode在创建文件时已经帮我们做了绝大部分工作,我们可能需要修改一下公司名称,因为xcode给不知道我们公司名称,它不可能预知一切,所以需要我们自己通过设置来告诉它。那么我们如何做到这一点呢?因为xcode中没有有关公司名称的占位符,所以我们必须通过terminal使用命令来设置。

    在使用这个命令之前 我们来看看xcode为我们提供的默认文件头部注释:

       

    //
    // untitled.m
    // FilesOrganize
    //
    // Created by yan li on 8/29/09.
    // Copyright 2009 __MyCompanyName__. All rights reserved.
    //

       

     

    在terminal中执行如下命令(打开terminal的热键是command+shift+U):

    复制代码代码如下:

    yan-lis-macbook-pro:~ yanli$ defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{"ORGANIZATIONNAME" = "LiYanzhong";}'

    注意上面的命令是在terminal命令行的同一行,而不是两行,这里是因为命令太长所导致。注意该命令执行时不会发出任何提示,即使你在命令中写错了参数名执行后也不会有任何提示,所以如果你执行该命令后发现你期待的效果没有出现,就请你检查一下你是否有拼写错误,执行该命令后我们重新启动xcode并重新创建文件,这个时候创建的文件头部注释,如下所见:

     

    /*
     * untitled.h
     * Untitled
     *
     * Created by yan li on 8/29/09.
     * Copyright 2009 LiYanzhong. All rights reserved.
     *
     */

       

     

    2)使用编辑器的技巧

    a)如何关闭Xcode界面上的浏览器窗口?

    点击 在Xcode工具栏上的最右边个Editor图标,可以打开或关闭Xcode中查找项目文件的浏览器。快捷键是command+shift+E。

     IOS开发入门之Xcode使用教程详细讲解(全)

    如果你的窗口上每个我所说的图标,则你需要自己手动将该图标放置到工具栏上。如何放呢?

    激活Xcode工具,进入 View->Customize Toolbar... 你会发现右很多没有在工具栏上出现的工具,你可以将想要随时可以用的工具拖到工具栏上就ok了。

    b)如何对代码进行首行缩进?

    第一种方法:选中需要缩进的代码,按住control键后单击光标,出现pop菜单,然后选择Re-indent selection。

    第二种方法:选择需要调整的代码,同时按下command+[ (左移动代码)或 command+](右移动代码)。

    c)代码自动完成功能的强大应用

    在Xcode中写代码,Xcode编辑器常常给出提示,如果给出的代码提示符合我们的要求,我们就可以按tab键选择所提示的代码。

    如果提示代码不符合我们要求,我们可以按下esc键,将整个提示列表显示出来,找到我们需要的。在列表成员的最左边有个小方框,如果里面是f则对应的成员是函数;如果是m则是方法;如果是#则是#define命令;如果是E则是枚举;如果上C表示类。

    如果我们不希望显示提示列表也能在列表成员间选择,我们可以使用快捷键control+. 在选项之间循环;也可以使用shift+control+. 在选项间反向循环。我们可以通过“代码自动完成功能”来查询一个类所提供了哪些API(接口方法)。方法是将类写在方法调用表达式中实现这一查询功能:

    [NSDictionary+空格,然后按下esc键,将出现NSDictionary中提供的方法列表。注意:[NSDictonary后面必须要有空格,提示编译器类名称已经写完接下来要输入的是消息(即类中的方法名)。

    将光标从一个占位符跳到下一个占位符的快捷键是:control + /

    d)在修改一个项目的代码时,请先拍下快照。

    File->Make Snapshot 拍下项目的快照; File->Snapshots 从快照中恢复。对应的快捷键:control+command+S; 恢复没有快捷键,这样的好处就是--当代码修改烂了,可以恢复到最处状态。由此可见,这个功能只是在我们修改代码时提供帮助,不能真正的替代我们手动修改代码。

    e)查找 替换功能的使用:

    Edit->Find->Find in Projects... 出现如下对话框:

     IOS开发入门之Xcode使用教程详细讲解(全)

    在Find栏输入要查找的字符;在Replace栏中输入要替换查找到的字符的字符;我们选择在工程中查找。如果我们不选择Ignore case 则替换只发生在main()函数中。

    该方法修改代码有很到的弊端--如果我只想修改某个函数内的car字符,但是这样修改会将函数外的所有我不许修改的car字符也改了;二是它不能修改类名和文件名;所以需要下面的方法来弥补它的第一不足。

    f)该方法可以解决上面修改代码的第一个缺陷,可以将代码的修改控制在一个函数之内,但是它仍然不能修改类和文件名字。使用这个方法前,必须用光标选择一个需要修改的局部变量字符或函数参数,注意必须是字符,如果你选择的是类名字符则不会出现菜单项“ Edit all in Scope".

    Edit->Edit all in Scope,然后在你输入的时候,所有出现该字符的地方一起被输入的字符替换掉。

    g)下面讲解一种可以修改类名和文件名的方法。

    是用该方法可以改变类名字和文件名;先选择一个需要被修改的类名,如Engine;将光标插了到该字符中,选择Edit->Refactor...打开如下的对话框:

     IOS开发入门之Xcode使用教程详细讲解(全)

     IOS开发入门之Xcode使用教程详细讲解(全)

    你如果需要将Car修也可以。

    按下 preview按钮,界面如下所见,Xcode自动给处了我们分析报告,有什么文件将被修改,每个文件有几处会被修改等信息。从下面图可以看到,类名以及类的文件名都被修改了。

     IOS开发入门之Xcode使用教程详细讲解(全)

    h)在Cocoa文本域常用的快捷键:

    使用如下的快捷键 我们就可以在小范围呢移动光标二不让手不离开键盘了。

    control+F : 在同一行上将光标向右移动
    control+B : 在同一行上将光标向左移动
    control+P : 将光标移动到前一行
    control+N : 将光标移动到后一行
    control+A : 将光标移动到本行的行首
    control+N : 将光标移动到本行的行尾
    control+T : 将光标两边的字符对调
    control+D : 删除光标右边的字符
    control+k : 删除光标所在行 光标后面的代码,便于你重写行尾代码
    control + L :将光标插点置于窗口正中。

    i)如何在Xcode中搜索一个文件?

    在一个源文件如何打开一个由#import导入的头文件呢?

    选中该头文件(可以不包含.h),然后通过File->Open Quickly...打开该被选中的文件。
    在没有选中任何文本时,选择Open Quickly...则打开一个简单的查询窗口,查找工程中的文件。快捷键command+shift+D
    如果你当前在看一个.m文件,这个时候你突然想要看看与该文件对应的.h文件,我们可以使用command + option+向上箭头 组合键,打开配套文件。

    j)Xcode中书签的使用

    如果你要将代码中的某个部分标注起来,以便以后和方便的找它这部分代码,则我们可以使用书签。

    选中一段文本或在源文件中放入插入点,然后选择Edit->Add to Bookmarks(快捷键 command + D),出现提示时输入书签名。

    k)代码编辑器的导航条

    导航条 就是在本文编辑窗口的顶部。

    导航条上有个功能菜单,我们可以通过#pragma mark命令向 功能菜单上添加项。#pragma指令将objective-c将常规代码之外的信息或说明传递给编译器和代码器。通常,#pragma是被忽略,如果你的编译器不认识它就会忽略它,不会报考警告。

    除了通过#pragma mark向功能菜单添加项;

    在注释中以如下关键字符打头的文本都会被添加到功能菜单:

    复制代码代码如下:


    MARK:  
    TODO:  
    FIXME:  
    !!!:  
    " alt="Xcode使用教程详细讲解(全)" />

    L)通过研究助手(Research Assistant)获取Xcode 的文档和参考资料。

    可以通过Help->Show Research Assistant 打开研究助手;一旦研究助手的浮动窗口被打开后,浮动窗口中的内容会随着你与Xcode 交互操作的内容改变而改变。
    如下图所示:在Tire.m文件中,当光标在NSString类上时,研究助手浮动窗口所显示的信息:

     IOS开发入门之Xcode使用教程详细讲解(全)

    切换到文件Tire.h中,研究助手的浮动窗口就显示有关NSObject的信息:

     IOS开发入门之Xcode使用教程详细讲解(全)

    M)文档管理程序

    我们可以通过访问苹果公司的官方API文档;方法是按住Option键并双击某个要查看的符号。如我们按住Option键并双击NSString符号将在文档浏览器窗口中打开有关NSString的资料信息,如下图:

     IOS开发入门之Xcode使用教程详细讲解(全)

    按住control键并单击文档区域来打开pop菜单,选择任何菜单项,在另一个窗口中打开该文档。

    M)如何调试程序?

    (a)有两种方法:一是暴力调试,二是使用调试器调试。

    什么是暴力调试?

    暴力调试就是在你的程序中添加NSLog()语言,将程序的控制流程和一些重要数据输出到终端上。

    调试器调试:

    调试器 就是介于你编写的应用程序和操作系统之间的一种程序,可以对你的程序进行控制,如停止,执行,单步跟踪等。

    Xcode使用的调试器是GDB。

    Xcode除了有GDB外,还有一个微型调试器,它是一个浮动窗口,通过它我们能接跳过GDB调试器做一些简单的调试工作。
    Xcode有一个提供大量概述信息的调试窗口。
    Xcode提供一个调试控制台,通过它可以直接向调试器发调试命令。

    (b)如何用调试器进行调试?

    (1)编译程序时必须使用编译器的Debug配置,这样编译出的程序包含调试信息(调试器要用的信息)
    (2)调试时 需要让程序在调试器模式下运行。

    在Xcode中有两种运行程序的方法:Run->run (快捷键:command + R), 不用调试器运行程序;

    Run->Go(Debug)或者Run->Debug(快捷键:command+Y),使用调试器运行程序。

    (3)对 断点 的操作 如何设置断点?

    在 边列(gutter)上单击 就可以设置一个蓝色的断点;在次单击就disable该断点;如果要删除该断点就将该断点拖出边列。

    调试快捷键:

     

    continue  :  option + command + P
    step Into  :   shift + command + I
    step Over :   shift + command + O
    step Out  :   shift + command + T

       

     

    打开Xcode的调试窗口(点击调试控制栏上一个有喷雾器的方框)如下图:

     IOS开发入门之Xcode使用教程详细讲解(全)

    通过该窗口,可以执行各种调试命令并观察变量值的变化。

    如下是GDB的命令调试窗口,在其中可以输入gdb的调试命令对程序进行调试:

     IOS开发入门之Xcode使用教程详细讲解(全)

    通过调试控制栏上一个控件(黑色方框控件右边的那个),可以察看函数调用栈;如上图所示。

    [Note]边列(断点所在的列) 傍边较窄一列就是 焦点列。

    小结:Xcode使用教程详细讲解的内容介绍完了,希望本文对你有所帮助,我们大概学习了Xcode这一强大的工具,要想深入研究它,我们还有很多的路要走,不过我们已经有了一个好的开始。

    展开全文
  • xcode版本下载

    千次阅读 2018-12-01 10:24:27
    下载地址 https://developer.apple.com/download/more/
    展开全文
  • 【课程特点】 学习iOS开发,请选本套课程,理由如下: 1、180节大容量课程:包含了iOS开发中的大部分实用技能; 2、创新的教学模式:手把手教您iOS开发技术,一看就懂,一学就会;... 3、贴心的操作提示:让您...
  • IOS开发从入门到精通-第一章

    千人学习 2019-06-27 11:03:31
    本课程详细介绍了IOS开发环境搭建及开发工具的使用,讲解了IOS开发常用视图控件的使用 ,还讲解了一个实用的功能实例:APP启动引导页的开发。
  • 如何在xcode10上发布app

    千次阅读 2019-01-08 21:09:45
    发布苹果app,首先得花688一年的价钱去买一个开发者账号(需要visa或者mastcard 信用卡)。然后就是在... 添加一个产品证书。   ...然后添加一个app id。...然后双击它,这样就自动...

    发布苹果app,首先得花688一年的价钱去买一个开发者账号(需要visa或者mastcard 信用卡)。然后就是在https://developer.apple.com/account/ 中登陆进去。

    添加一个产品证书。

     

    然后添加一个app id。

    一个app 必须申请一个app id。

     

    然后添加一个描述文件

     

    下载这个描述文件。

    然后双击它,这样就自动导入到xcode中了。

    进入 https://appstoreconnect.apple.com/

    单击我的App,然后添加新的app。

    把这三个菜单栏填写完成。

    然后就去xcode10中打包app,并上传了。

    选择刚才下载的描述文件

    选择对应的发布证书

    Swift语言开发的app 还需要在这里选择yes

    然后选择 product -> archive 打包。

    打包完成之后,如下图:

    选择 distribute app 发布app

    一路next

    选择证书跟描述文件。

    选择upload 上传即可。

    上传成功之后,我们又回到网站上。选择刚才的上传文件。如下图:

    选择好之后,单击发布审核,等待苹果商店审核几天。整个发布过程就结束了。

    展开全文
  • xcode 9.4下载

    千次阅读 2018-11-13 18:40:28
    本文以下载xcode 9.4.1为例,我的系统版本是Mac OS high sierra 10.13.2,我的系统渐入的xcode最高版本是 xcode 9.4.1,去AppStore 搜只能搜到xcode 10 以后的版本,坑爹苹果只推荐新的版本。。。 因为High sierra ...
  • 免费下载Xcode的各个版本

    万次阅读 2019-03-07 14:32:53
    搜索Xcode,找到开发者,点进去,申请一个号,有邮箱即可申请。但是开发者里面下载不了,需要从别的地方下载。下载连接如下:https://developer.apple.com/download/more/ 如果没有登陆开发者账号,上面连接点进去...
  • 今天把Xcode升级到11.1,明明空间还有好几十G,但是却提示空间不足,所以感觉未必是Xcode APP本身大小的原因,一番调查后发现了原因,如下: 1、在“/Users/apple/Library/Developer”下后两个目录,CoreSimulator...
  • Xcode 各版本简介

    千次阅读 2018-11-12 09:12:22
    1、Xcode 验证 在终端输入 spctl 命令,并带上安装的 Xcode 的路径 $ spctl --assess --verbose /Applications/Xcode.app 之后会看到类似这样的结果,只要结果是 accepted 而且 source 是 Mac App ...
  • XCODE 9:最新功能详尽介绍

    万次阅读 2017-11-27 16:50:49
    WWDC17 带来许多令人兴奋的好消息,iOS 11, Swift 4 和 Xcode 9,每个都有非常大的进步。但对 App 开发者来说,马上可以派上用场的莫过于 Xcode,毕竟我们开发的 App,可能不需要 iOS 11 的 AR 和 machine learning...
  • Xcode是一款功能全面的应用程序,通过此工具可以轻松输入、编译、调试并执行Objective-C程序。如果想在Mac上快速开发iOS应用程序,则必须学会使用这个强大的工具的方法。在本文容中,将详细讲解Xcode 9开发工具的...
  • 哪个OS X版本支持哪个Xcode的版本?

    千次阅读 2019-09-27 14:39:10
    在安装Xcode时,会碰到跟OS X操作系统匹配的问题,对照下下面几个表,以免给自己带来编译不过或者奇怪的错误等问题 以下列表来自网络: Xcode 1.0 - Xcode 2.x (before iOS support) Version history Version ...
  • Xcode 10.1 (xip) 官方直接下载地址(离线下载)

    万次阅读 多人点赞 2018-11-05 09:59:01
    ### Xcode 10.1 https://download.developer.apple.com/Developer_Tools/Xcode_10.1/Xcode_10.1.xip ### Xcode 10 https://download.developer.apple.com/Developer_Tools/Xcode_10/Xcode_10.xip ### Xcode...
  • Xcode 更改默认版本 xcode-select

    万次阅读 2017-04-07 16:48:23
    我们的Xcode使用版本可以根据Xcode > Preferences > Locations路径查看到正在使用的版本和该版本路径。我们本文介绍的是在终端使用xcode-select命令 根据需求修改使用的Xcode版本。在终端xcode-select可使用的命令...
  • MAC安装XCode、Command Line Tools

    万次阅读 2018-04-09 12:31:06
    1、appStore中查找XCode,点击安装2、打开终端,输入xcode-select --install 安装Command Line Tools3、安装完成,在终端查看是否安装成功,依旧输入上述命令4、也可打开xcode新建项目检查是否成功创建...
  • Xcode 10 官方直接下载地址

    万次阅读 2018-10-23 18:50:56
    Xcode 10 https://download.developer.apple.com/Developer_Tools/Xcode_10/Xcode_10.xip Xcode 9.4 https://download.developer.apple.com/Developer_Tools/Xcode_9.4/Xcode_9.4.xip Xcode 9.3 ...
  • xcode-select --install 解决方案

    万次阅读 2019-03-24 07:20:21
    背景 Mac下安装tesseract时,出现如下问题 Error: Xcode alone is not sufficient on Sierra. Install the Command Line Tools: xcode-select --install 但Mac最新场景下安装...根据提示在使用命令xcode-select
  • Xcode清理缓存和垃圾文件

    万次阅读 2017-04-13 20:32:18
    一、清理Xcode中的垃圾文件1、前往Xcode所在的文件目录:~/Library/Developer/Xcode。如下图:2、进入目录后,可以看到Xcode文件中包含了如下几个文件夹:(1) Archives 存放的是Xcode打包时生成的文件,这里面的文件...
  • 在使用InstrumentDriver做iOS自动化测试,其他Mac电脑上都用的好好的,遇到一...后来删除,重新安装后,xcode自动安装到了/Applications/Xcode.app了。 在终端中使用xcode-select -print-path打印命令看到,显示Xcode
1 2 3 4 5 ... 20
收藏数 197,262
精华内容 78,904
关键字:

xcode