Xcode是iOS开发主要的工具、IDE。关于Xcode的细枝末节,可以参考苹果的官方文档或者众多的说明。此文档主要涉及常用开发和调试注意事项,参考版本为Xcode 5.1.1。

目标设置:

在此,我就不区分Project和Target了,这两方面有很多共同的设置,所以只需要了解需要设置哪些子项就可以了。

  1. Deployment Target:设置支持的最低设备版本,这个根据代码的API支持情况而定
  2. Base SDK:理论上应该设置为最新版本的SDK,以支持最高版本
  3. Identity:设置Bundle Identifier(即AppId)、Version(版本号)、Build(编号)
  4. Architecture:用于指定编译的目标架构,包括armv64、armv7、armv7s
  5. App Icons、Launch Images:设置各种标准图标
  6. Compiler:现在都默认为Apple LLVM,这是苹果专为C、C++、OC开发的编译器
  7. Other Linker Flags:当引用第三方静态链接库时,需要加上-ObjC和-all_load
  8. Info.plist File:指定项目的配置信息文件.plist,当然可以自己新建其他配置信息文件以供代码中使用
  9. Prefix Header:前提是Precompile Prefix Header为Yes,指定了预编译头文件.pch
  10. Search Paths:主要设置第三方引用的搜索路径,这就包括Framework(框架)、Header(头文件)、Library(静态链接库)
  11. Linked Frameworks and Libraries:管理引用的框架和链接库
  12. Code Signing Identity:主要设置本应用AppId产生的Debug、Distribution、Release三种模式的证书,来源为钥匙串
  13. Provisioning Profile:主要设置本应用AppId和相应证书生成的概要配置文件,来源也是钥匙串,并且会决定Code Signing Identity中对应模式的备选证书

编译调试设置:

  1. 设置当前活动的模式:位于Xcode左上角的选项,包括设置目标项目和模拟器版本。例如需要先编译静态链接库或者改变启动项目。
  2. 编辑模式:点击桌面菜单栏的Product->Scheme->Edit Scheme,可以设置更详细
  3. 运行调试:可以直接点击“播放”按钮,也可以在菜单栏中的product子项中选择 run、Build For、Build、Clean等。

Archive打包设置:

  1. 在编译调试设置的第二条显示界面中,选择左边的Archive,再设置Build Configuration项为Distribution
  2. 将模拟器选择项设置为“iOS Device”(连接设备时,即为当前设备名称)
  3. 在编译调试设置的第三条中,选择Archive(此前为灰色状态)

代码区自定义:

选择左上角的Xcode->Preferences进入Xcode设置界面。

Fonts&Colors:用于设置代码编辑区的背景和字体样式

Text Editing:用于显示行数、自动填充代码等等

Key Bindings:显示快捷键操作,也可自定义快捷键

模拟器使用简介:

模拟器是用于仿真iPhone和iPad运行,显示App界面和功能。但是需要注意,模拟器并不等于真机运行,因为模拟器cpu采用的是i386架构,但是iOS真机采用的是armv架构;并且模拟器不支持远程推送之类的功能。

模拟器上的操作总结:

Command + H:隐藏模拟器

Command + Q:推出模拟器

Command + S:截屏模拟器,存储到OS桌面

Command + L:锁屏

Command + ←:向左旋屏

Command + →:向右旋屏

Command + Shift + H:返回模拟器主界面,等于Home键

在iOS模拟器菜单栏,点击硬件->设备,可以切换模拟器设备

模拟器的iPhone SDK:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

上述路径,可以在Finder中Command+Shift+G搜索。

模拟器的沙盒路径:

这是在当前用户账户的隐藏目录下,路径为

/Users/[USERNAME]/Library/Application Support/iPhone Simulator/7.1/Applications

此处的7.1为当前模拟器iOS版本,在Applications目录下,可以看到不同文件夹,代表不同的App。然后就可以看到App的沙盒目录:Documents、Library、tmp三个文件夹。

编译错误分析:

编译错误种类太多,我只描述一下遇到的常见类型和重要错误。

常见错误,大多都是代码编写的问题,例如变量未实例化、对象引用计数为-1、向nil对象发送方法请求等。

比较重要的有:

  1. Reference、link相关:即引用相关错误,多半是链接库或者头文件引用找不到,或者重复引用的问题。需要检查头文件引用,或者头文件搜索路径的配置。
  2. 带有i386关键字的问题:多指编译目标架构不对应,i386架构只针对模拟器运行,但是真机编译,需要armv架构;或者是引用的静态链接库的编译架构有误。
  3. 某些api被废弃:一般出现在更新了新版SDK后,需要找到对应api,然后替换为最新方法
  4. 证书错误:这个返回到目标设置里去调整,或者需要去开发者中心重新配置生成
  5. 预编译头文件.pch被修改:这个问题不大,clean以后重新编译即可

Xcode开发和调试总结的更多相关文章

  1. 5个Xcode开发调试技巧

    转自Joywii的博客,原文:Four Tips for Debugging in XCode Like a Bro    1.Enable NSZombie Objects(开启僵尸对象) Enab ...

  2. iOS 5个Xcode开发调试技巧

    转自Joywii的博客,原文:Four Tips for Debugging in XCode Like a Bro    1.Enable NSZombie Objects(开启僵尸对象) Enab ...

  3. (转)5个Xcode开发调试技巧

    1.Enable NSZombie Objects(开启僵尸对象) Enable NSZombie Objects可能是整个Xcode开发环境中最有用的调试技巧.这个技巧非常非常容易追踪到重复释放的问 ...

  4. xcode 真机调试 failed to get the task for process xxx

    xcode 真机调试 failed to get the task for process xxx 此错误原因是,使用 in house profile 签名了真机调试的证书: 在 target--- ...

  5. Xcode真机调试初体验

    1. 开发者证书(Certificates) 分为开发(iOS Development)和发布(iOS Distribution)两种,无论是真机调试,还是上传到App Store都需要该证书,是一个 ...

  6. 【转】Xcode真机调试初体验

    1. 开发者证书(Certificates) 分为开发(iOS Development)和发布(iOS Distribution)两种,无论是真机调试,还是上传到App Store都需要该证书,是一个 ...

  7. ios xcode真机调试获取屏幕截屏

    非常多时候我们须要在调试的过程中把手机屏幕截图发给其它人看,在android开发中我们能够非常方便的截图保存.而xcode开发ios的时候发现这个需求却如此困难.网上大部分都是介绍的以下这个方案.可是 ...

  8. iOS开发的调试技巧

    关于本文: 1.模拟器的快捷键 2.覆盖安装注意事项 3.给模拟器相册增加照片 4.模拟器中程序的数据 5.安装旧版本的模拟器 6.模拟慢网速 7.异常断点与符号断点 1.模拟器的快捷键 常用的模拟器 ...

  9. tomcat开发远程调试端口以及利用eclipse进行远程调试

    一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里:  SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...

随机推荐

  1. DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表

    原文:DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助 ...

  2. ASP.Net MVC 数据处理

    ASP.Net MVC 数据处理   第三天我们将学习Asp.Net中数据处理功能,了解数据访问层,EF,以及EF中常用的代码实现方式,创建数据访问层和数据入口,处理Post数据,以及数据验证等功能. ...

  3. Codeforces Round #272 (Div. 1)D(字符串DP)

    D. Dreamoon and Binary time limit per test 2 seconds memory limit per test 512 megabytes input stand ...

  4. 【SSH三个框架】Hibernate第十篇基础:inverse属性具体解释

    inverse后经常用于双向1-N在相关性.它也可以在使用N-N该协会,这里,例如用双1-N联想 或两个与各部门及工作人员,两javabean没有写. 首先,我们的员工看映射文件: <?xml ...

  5. UML九种图汇总

    UML视频读,该文件开始起草.我不知道如何下手啊!我想先UML九图和总结的关系,然后开始用它的文件. 首先在地图上. UML的九种图各自是:用例图.类图.对象图.状态图.活动图.协作图.序列图.组件图 ...

  6. node.js的npm安装

    我不打算引进node.js的npm安装,但发现node.js通过管理一些包npm实现,或给一个简短的npm. 1.npm什么        npm是一个node包管理和分发工具,已经成为了非官方的公布 ...

  7. 深度解析javascript中的浅复制和深复制

    原文:深度解析javascript中的浅复制和深复制 在谈javascript的浅复制和深复制之前,我们有必要在来讨论下js的数据类型.我们都知道有Number,Boolean,String,Null ...

  8. DeviceIOControl具体解释-各个击破

    DeviceIoControl这个api我们用的不多,可是非常重要,有时会帮助我们实现一些特别的需求, 如获取硬件设备信息.与硬件设备通信(读写数据)等,对比msdn,以下我们详解一下这个api的使用 ...

  9. Java初认识--函数和数组

    一.函数 1.函数的定义 函数就是定义在类中的具有特定功能的一段独立小程序,函数也称为方法. java中最小的功能单元就是函数. 2.函数的格式 修饰符 返回值类型 函数名(参数类型 形式参数1,参数 ...

  10. REUSEADDR 选项

    一般而言,对于处理2MSL状态的套接字(一般为服务端套接字)是不允许接受从同一客户端重新发起一个新的连接的,但是套接字编程系统接口允许应用程序通过设置一个REUSEADDR选项,使处于2MSL状态的套 ...