Xcode开发和调试总结
Xcode是iOS开发主要的工具、IDE。关于Xcode的细枝末节,可以参考苹果的官方文档或者众多的说明。此文档主要涉及常用开发和调试注意事项,参考版本为Xcode 5.1.1。
目标设置:
在此,我就不区分Project和Target了,这两方面有很多共同的设置,所以只需要了解需要设置哪些子项就可以了。
- Deployment Target:设置支持的最低设备版本,这个根据代码的API支持情况而定
- Base SDK:理论上应该设置为最新版本的SDK,以支持最高版本
- Identity:设置Bundle Identifier(即AppId)、Version(版本号)、Build(编号)
- Architecture:用于指定编译的目标架构,包括armv64、armv7、armv7s
- App Icons、Launch Images:设置各种标准图标
- Compiler:现在都默认为Apple LLVM,这是苹果专为C、C++、OC开发的编译器
- Other Linker Flags:当引用第三方静态链接库时,需要加上-ObjC和-all_load
- Info.plist File:指定项目的配置信息文件.plist,当然可以自己新建其他配置信息文件以供代码中使用
- Prefix Header:前提是Precompile Prefix Header为Yes,指定了预编译头文件.pch
- Search Paths:主要设置第三方引用的搜索路径,这就包括Framework(框架)、Header(头文件)、Library(静态链接库)
- Linked Frameworks and Libraries:管理引用的框架和链接库
- Code Signing Identity:主要设置本应用AppId产生的Debug、Distribution、Release三种模式的证书,来源为钥匙串
- Provisioning Profile:主要设置本应用AppId和相应证书生成的概要配置文件,来源也是钥匙串,并且会决定Code Signing Identity中对应模式的备选证书
编译调试设置:
- 设置当前活动的模式:位于Xcode左上角的选项,包括设置目标项目和模拟器版本。例如需要先编译静态链接库或者改变启动项目。
- 编辑模式:点击桌面菜单栏的Product->Scheme->Edit Scheme,可以设置更详细
- 运行调试:可以直接点击“播放”按钮,也可以在菜单栏中的product子项中选择 run、Build For、Build、Clean等。
Archive打包设置:
- 在编译调试设置的第二条显示界面中,选择左边的Archive,再设置Build Configuration项为Distribution
- 将模拟器选择项设置为“iOS Device”(连接设备时,即为当前设备名称)
- 在编译调试设置的第三条中,选择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对象发送方法请求等。
比较重要的有:
- Reference、link相关:即引用相关错误,多半是链接库或者头文件引用找不到,或者重复引用的问题。需要检查头文件引用,或者头文件搜索路径的配置。
- 带有i386关键字的问题:多指编译目标架构不对应,i386架构只针对模拟器运行,但是真机编译,需要armv架构;或者是引用的静态链接库的编译架构有误。
- 某些api被废弃:一般出现在更新了新版SDK后,需要找到对应api,然后替换为最新方法
- 证书错误:这个返回到目标设置里去调整,或者需要去开发者中心重新配置生成
- 预编译头文件.pch被修改:这个问题不大,clean以后重新编译即可
Xcode开发和调试总结的更多相关文章
- 5个Xcode开发调试技巧
转自Joywii的博客,原文:Four Tips for Debugging in XCode Like a Bro 1.Enable NSZombie Objects(开启僵尸对象) Enab ...
- iOS 5个Xcode开发调试技巧
转自Joywii的博客,原文:Four Tips for Debugging in XCode Like a Bro 1.Enable NSZombie Objects(开启僵尸对象) Enab ...
- (转)5个Xcode开发调试技巧
1.Enable NSZombie Objects(开启僵尸对象) Enable NSZombie Objects可能是整个Xcode开发环境中最有用的调试技巧.这个技巧非常非常容易追踪到重复释放的问 ...
- xcode 真机调试 failed to get the task for process xxx
xcode 真机调试 failed to get the task for process xxx 此错误原因是,使用 in house profile 签名了真机调试的证书: 在 target--- ...
- Xcode真机调试初体验
1. 开发者证书(Certificates) 分为开发(iOS Development)和发布(iOS Distribution)两种,无论是真机调试,还是上传到App Store都需要该证书,是一个 ...
- 【转】Xcode真机调试初体验
1. 开发者证书(Certificates) 分为开发(iOS Development)和发布(iOS Distribution)两种,无论是真机调试,还是上传到App Store都需要该证书,是一个 ...
- ios xcode真机调试获取屏幕截屏
非常多时候我们须要在调试的过程中把手机屏幕截图发给其它人看,在android开发中我们能够非常方便的截图保存.而xcode开发ios的时候发现这个需求却如此困难.网上大部分都是介绍的以下这个方案.可是 ...
- iOS开发的调试技巧
关于本文: 1.模拟器的快捷键 2.覆盖安装注意事项 3.给模拟器相册增加照片 4.模拟器中程序的数据 5.安装旧版本的模拟器 6.模拟慢网速 7.异常断点与符号断点 1.模拟器的快捷键 常用的模拟器 ...
- tomcat开发远程调试端口以及利用eclipse进行远程调试
一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里: SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...
随机推荐
- C++ Primer 学习笔记_56_ 类和数据抽象 --消息处理演示示例
拷贝控制 --消息处理演示样例 说明: 有些类为了做一些工作须要对复制进行控制. 为了给出这种样例,我们将概略定义两个类,这两个类可用于邮件处理应用程序.Message类和 Folder类分别表示电子 ...
- C#中反射的概念及其使用(转)
提纲:1. 什么是反射2. 命名空间与装配件的关系3. 运行期得到类型信息有什么用4. 如何使用反射获取类型5. 如何根据类型来动态创建对象6. 如何获取方法以及动态调用方法7. 动态创建委托 1.什 ...
- python_基础学习_01_按行读取文件的最优方法
python 按行读取文件 ,网上搜集有N种方法,效率有区别,先mark最优答案,下次补充测试数据 with open('filename') as file: for line in file: d ...
- Asp.Net+Easyui实现重大CRUD
今天周四称,这应该给自己一个休息,好好休息休息,但无奈自己IT这是痴迷.甘心的想加加班把目标功能实现,功夫不负有心人.经过6个小时的鏖战,我最终成功了. 在此和大家分享下成果,希望大家给个赞. 我的目 ...
- 几款web版整合(QQ、msn、icq、yahoo通、Gtalk等)即时聊天http://hi.baidu.com/ejie/blog/item/e89794ef9a9431efce1b3ebd.html
直到近期为止,我们经常使用的即时聊天工具(QQ.msn等)了Web版,大家不用下载庞大软件,直接打开网页就能够与自己的好友聊天,很方便.在此将时汇总,便于大家查找,节约大家一点时间. 此都是官 ...
- UVA11627-Slalom(二分法)
题目链接 题意:有n个宽为w的旗门,第i个旗门左端的坐标为(xi, yi),对于全部1 <= i < n满足yi < y(i+1).你有s双滑雪板,第j双的速度为sj(垂直向下的速度 ...
- Dialog中显示倒计时,到时自己主动关闭
这里直接用系统Dialog中加入了倒计时的显示,假设用自己定义Dialog会更美观: private TextView mOffTextView; private Handler mOffHandle ...
- poj 2513 Colored Sticks(欧拉路径+并检查集合+特里)
题目链接:poj 2513 Colored Sticks 题目大意:有N个木棍,每根木棍两端被涂上颜色.如今给定每一个木棍两端的颜色.不同木棍之间拼接须要颜色同样的 端才干够.问最后是否能将N个木棍拼 ...
- SqlDataReader的关闭问题
原文:SqlDataReader的关闭问题 昨天一个朋友使用Repeater绑定数据源时,老是出现"阅读器关闭时尝试调用 FieldCount 无效."错误. 我看了他的代码,使用 ...
- Object-C面向对象之实现类
Object-C面向对象之实现类 一般涉及到面向对象都会C#,Java都不可避免的涉及到类,C#中类的后缀名是.cs,Java中是.java,Object-C中一般用两个文件描述一个类,后缀名为.h为 ...