Xcode界面简介
创建 Object-C 程序
进入主界面方式 : 打开 Xcode 之后, 可以使用 Xcode 菜单, 但是必须创建一个 Object-C 工程 或者 导入 一个 Object-C 工程才可以进入主界面;
-- 打开现有工程 : 点击右边的历史记录, 就可以打开现有的工程;
-- 创建工程 : 点击第一个 Create a new Xcode Project 即可创建一个新工程;
-- 导入工程 : 点击 Check out an existing project 可以导入一个已经创建的工程;
创建一个命令行程序 : 选择 创建工程界面的 OS X --> Command Line Tool 程序, 即创建了一个命令行程序, Cocoa Application 是创建有界面的程序;
-- ios 项目 : ios项目是为手机和平板开发的应用;
-- OS X 项目 : OS X 是为 OS 操作系统创建的应用;
创建工程 : 注明 工程名, 公司名称, 类型;
-- Product Name : 工程名称;
-- Organization Name : 组织名称;
-- Type : 这里选 Foundation, 这是 Object-C 工程;
创建 IOS 项目
打开 Xcode 并选择创建新工程 : 弹出菜单中选择 IOS --> Single View Application 工程;
填写项目信息 :
-- Product Name : 项目名称;
-- Organization Name : 公司标识;
-- Class Prefix : 为了避免用户定义类与 Object-C 类命名冲突问题, 在每个类之前都加上这个前缀;
-- Devices : 选择应用运行的设备, Universal 表示同事兼容 ipad 和 iphone;
Xcode 界面详解
1. Xcode 界面简介
(1) 顶部区域
程序运行相关 :
-- 从左至右介绍 : 运行按钮, 停止按钮, 为工程选择运行平台;
编辑器相关 :
-- 从左至右介绍 : 标准编辑器, 辅助编辑器, 版本编辑器;
面板控制相关 :
-- 从左至右介绍 : 隐藏左侧面板, 隐藏底部面板, 隐藏右侧面板;
(2) 左面板
面板介绍 : 该面板是 Xcode 工程导航面板, 上方的七个按钮用于切换导航模式;
(3) 底部面板
面板介绍 : 用于 Xcode 显示 控制台调试输出信息;
(4) 右面板
检查器面板 : 根据项目的不同, 包含大量审查器;
库面板 :
-- 库面板简介(从左至右) : 文件模板库, 代码片段库, 对象库, 媒体库;
(5) 详细编辑区
该区域是代码编写主要区域 :
2. 导航面板详解
导航面板简介 :
-- 从左至右 : 项目导航, 符号导航, 搜索导航, 问题导航, 测试导航, 调试导航, 断点导航, 日志导航;
(1) 项目导航
项目导航组成 :
-- 源文件 : 在 HelloWorld 目录下的 ".h" 和 ".m" 后缀文件是源文件;
-- 属性文件 : 在 HelloWorld 下的 Supporting Files 目录下是属性文件 图片等;
-- 单元测试项目 : HelloWorldTest 是工程的单元测试项目;
-- 目标应用 : Products 目录下的 HelloWorld.app 是目标应用;
(2) 符号导航
符号导航简介 : 用符号显示工程中的 类, 项目 和 属性;
-- 表示方式 : C 表示类, M 表示方法, P 表示属性;
-- 快速定位 : 点击对应的方法或者属性, 能快速定位到这个类中;
(3) 搜索导航
搜索导航简介 : 在搜索框中输入要搜索的字符串, 按回车就可以搜索出包含该字符串的类;
(4) 问题导航面板
问题导航面板简介 : 显示项目中存在的警告或者错误;
(5) 测试导航
测试导航简介 : 点击 testExample 后面的执行按钮, 就会运行该单元测试;
(6) 调试导航
调试导航简介 : 调试导航面板中显示了各线程的详细信息;
添加断点 : 在 OCTViewController.m 中添加一个断点;
开始调试(自动判断) : 点击顶部面板中的调试按钮, 如果代码中有断点, 就会自动进入调试状态, 执行到断点时会自动停止, 详细调试信息显示在底部的调试输出面板;
调试面板介绍 : 下面从左至右介绍;
-- Continue program execution : 继续执行下面的代码;
-- Step over : 单步调试, 点击一次该按钮, 执行一行代码, 如果有方法调用, 不会进入方法中;
-- Strp in : 步入调试, 点击该按钮, 会进入方法中;
-- Step out : 步出调试, 在方法中, 点击该按钮, 会退出方法, 执行方法外的单步调试;
(7) 断点导航
断点导航简介 : 列出所有的断点, 方便管理断点;
(8) 日志导航
日志导航简介 : 列出项目开发过程中 构建, 生成, 运行过程, 每次该过程都可以通过日志面板查看;
3. 检查器面板
检查面板分类 :
-- 普通源文件 : 包含 文件检查器 和 快速帮助器;
-- 故事版 : 界面文件, 除了文件检查器 和 快速帮助器之外, 还有 身份检查器, 属性检查器, 大小检查器, 连接检查器;
文件检查器 :
-- Identity and Type : File Name(文件名), File Type(文件类型), Full Path(路径);
-- Text Settings : Text Encoding(文件编码使用字符集), Indent Using(缩进), Wrap lines(自动换行);
快速帮助器 : 将光标停留在系统类的时候, 该面板会显示该类的 参考手册, 使用指南 和 示例代码;
界面设计相关检查器 : 用户选中 ".storyboard" 或者 ".xib" 后缀的文件时, 会多出另外四个检查器;
-- 身份检查器 : 管理界面组件类 实现类, 恢复ID 等标识性的属性;
-- 属性检查器 : 管理界面组件 拉伸方式, 背景色 等属性;
-- 大小检查器 : 管理界面组件 宽高 xy轴坐标 等属性;
-- 连接检查器 : 管理界面组件 与程序代码之间的关联性;
4. 库面板
库面板简介 : 从左至右介绍;
-- 文件库模板 : 管理文件模板, 可以快速创建指定类型文件, 可以直接拖入项目中;
-- 代码片段库 : 管理各种代码片段, 可以直接拖入源代码中;
-- 对象库 : 界面组件, 可以直接拖入 故事板中;
-- 媒体库 : 管理各种 图片, 音频 等多媒体资源;
Xcode 帮助系统详解
帮助系统作用 : Object-C 开发中需要调用很多系统的类, 需要了解每个类的 用法, 通过 Xcode 帮助系统可以查询这些类的用法;
1. 快速帮助面板
右面板中的快速面板显示内容 : 该类继承的父类, 遵循的协议, 类所在框架, 点击Reference 中的链接, 可以进入类的详细介绍;
类详细介绍页面 : 通过 快速帮助面板 中的 Reference 中的链接, 可以进入该页面;
类方法分类界面 : 该界面与详细介绍界面是同一个, 下拉即可;
2. 直接搜索
搜索 : 通过任意链接进入类详细介绍界面之后, 可以在上方的输入框中输入关键字, 即可搜索相关的 类, 方法, 协议 或者 函数;
3. 代码自动提示
提示方式 : 代码编辑区域, 按住 option 键, 然后将光标移动到类上, 会变成问号, 点击就会出现下面的提示框;
1. 文件扩展名介绍
C语言源文件后缀 : ".c";
C++语言源文件后缀 : ".cc", ".cpp";
头文件 : ".h";
Object-C源程序 : ".m";
Object-C++源程序 : ".mm";
C/C++/Object-C/Object-C++生成的中间文件 : ".o";
C/C++/Object-C/Object-C++生成的可执行文件 : ".out";
2. 程序源码及解析
程序源码 :
- /* 导入 Foundation 框架下的 Foundation.h 文件 */
- #include <Foundation/Foundation.h>
- /* 程序入口函数 */
- int main(int argc, char * argv[])
- {
- /* 自动释放池, 该环境中执行的语句会自动回收所创建的对象 */
- @autoreleasepool
- {
- /* Foundation 中的输出函数, 可输出字符串, 对象等 */
- NSLog(@"Hello World"); /* @"Hello World", 加上 @ 是为了与 C 中的字符串区分 */
- }
- return 0;
- }
(1) 导入框架头文件
导入头文件语句 : #import <a/b.h> 是导入 a 框架 中的 b.h 头文件;
框架简介 : 框架是 一系列类 函数的集合, Cocoa QuickTime 都被封装成了框架, Cocoa 包括了 Foundation 和 Application Kit 等组件;
(2) 自动释放池
内存管理 : 在早期的 Object-C 需要手动管理内存的分配和回收, Object-C 2.0 引入了 ARC(自动引用计数) 和 自动释放池, 不在进行手动内存管理;
自动释放池 : 使用 "@autoreleasepool{}" 包裹的代码位于 Object-C 的自动释放池中, 这些语句会自动回收创建的对象, 不用进行手动的内存管理;
(3) 字符串输出
NSLog()函数 : 该函数是 Foundation 框架提供的一个函数, 该函数可以输出 字符串 对象等;
-- NS 前缀说明 : Cocoa 框架中所有的 类 函数 常量 都会加上 NS 前缀;
-- @"string" 说明 : @符号 用于区分 Object-C 与 C语言字符串, 加上 @ 符号的时 Object-C 字符串;
3. 编译运行代码
LLVM Clang 编译器语法 : clang -fobjc-arc -framwork 框架名称 源程序 -o 输出结果 ;
-- -fobjc-arc 参数 : 启用 Object-C 的 ARC 自动技术功能;
-- -o 参数 : 如果不带, 默认 输出 a.out ;
编译执行结果 :
- octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 01-HelloWorld.m
- octopus-2:ios octopus$ ls
- 01-HelloWorld.m a.out
- octopus-2:ios octopus$ ./a.out
- 2014-08-10 00:22:55.670 a.out[3394:507] Hello World
LLDB(就是Xcode下方的调试栏)中有用的一些命令
打印帮助
打印调用栈
打印最基本的内容 (p)
打印对象(po)
打印表达式(expr)
打印线程中的一些东西
LLDB 常用命令
假如你准备在模拟器里面运行这个,你可以在“(lldb)”提示的后面输入下面的:
- (lldb) po $eax
LLDB在xcode4.3或者之后的版本里面是默认的调试器。假如你正在使用老一点版本的xcode的话,你又GDB调试器。他们有一些基本的相同的命令,因此假如你的xcode使用的是“(gdb)”提示,而不是“(lldb)”提示的话,你也能够更随一起做,而没有问题。
“po”命令是“print object”(打印对象)的简写。“$eax”是cup的一个寄存器。在一个异常的情况下,这个寄存器将会包含一个异常对象的指针。注意:$eax只会在模拟器里面工作,假如你在设备上调试,你将需要使用”$r0″寄存器。
例如,假如你输入:
- (lldb) po [$eax class]
你将会看像这样的东西:
- (id) $2 = 0x01446e84 NSException
这些数字不重要,但是很明显的是你正在处理的NSException对象在这里。
你可以对这个对象调用任何方法。例如:
- (lldb) po [$eax name]
这个将会输出这个异常的名字,在这里是NSInvalidArgumentException,并且:
- (lldb) po [$eax reason]
这个将会输出错误消息:
- (unsigned int) $4 = 114784400 Receiver () has no segue with identifier 'ModalSegue'
注意:当你仅仅使用了“po $eax”,这个命令将会对这个对象调用“description”方法和打印出来,在这个情况下,你也会得到错误的消息。
实用LLDB命令
命令名 用法 说明
expr | expr 表达式 | 可以在调试时动态执行指定表达式,并将结果打印出来,很有用的命令。 |
po | po 表达式 | 与expr类似,打印对象,会调用对象description方法。是print-object的简写 |
print (type) 表达式 | 也是打印命令,需要指定类型。 | |
bt | bt [all] | 打印调用堆栈,是thread backtrace的简写,加all可打印所有thread的堆栈。 |
br l | br l | 是breakpoint list的简写 |
process continue l | process continue | 简写:c |
thread step-in l | thread step-in l | 简写:s |
thread step-inst l | thread step-inst l | 简写:si |
thread step-over l | thread step-over l | 简写:n |
thread step-over-inst l | thread step-over-inst l | 简写:ni |
thread step-out l | thread step-out l | 简写:f |
thread list | thread list | 简写:th l |
内存泄漏隐患提示:
Potential Leak of an object allocated on line ……
数据赋值隐患提示:
The left operand of …… is a garbage value;
对象引用隐患提示:
Reference-Counted object is used after it is released;
对retain、copy、init、release、autorelease等在计数时的使用情况的详细讲解,推荐一下:
http://www.cnblogs.com/andyque/archive/2011/08/08/2131236.html
调用autorelease这意味着,你可以在这个函数里面使用vari,但是,一旦下一次run loop被调用的时候,它就会被发送release对象。然后引用计数改为0,那么内存也就被释放掉了。(关于autorelease到底是怎么工作的,我的理解是:每一个线程都有一个autoreleasePool的栈,里面放了很多autoreleasePool对象。当你向一个对象发送autorelease消息之后,就会把该对象加到当前栈顶的autoreleasePool中去。当当前runLoop结束的时候,就会把这个pool销毁,同时对它里面的所有的autorelease对象发送release消息。而autoreleasePool是在当前runLoop开始的时候创建的,并压入栈顶。那么什么是一个runLoop呢?一个UI事件,Timer call, delegate call, 都会是一个新的Runloop。)
Xcode界面简介的更多相关文章
- 零元学Expression Design 4 - Chapter 1 入门界面简介
原文:零元学Expression Design 4 - Chapter 1 入门界面简介 Expression Design 是Expression系列里面的一员,更是Blend跟Web的好帮手 而在 ...
- 零元学Expression Blend 4 - Chapter 2 入门界面简介
原文:零元学Expression Blend 4 - Chapter 2 入门界面简介 在这篇教学我将会介绍Expression Blend 4的基本界面,虽然有些网站已经有做了介绍,为了整个教学的完 ...
- Charles系列一:Charles功能介绍、下载安装和界面简介
一:Charles主要功能介绍 Charles是一个HTTP代理/HTTP监视器/反向代理,使开发和测试人员能够查看机器和Internet之间所有的HTTP和SSL/HTTPS流量,这包括请求,响应. ...
- Eclipse界面简介
下载安装完成后,Eclipse的界面如下: (6)为eclipse的perspective(视图方案)由于安装的是for Java development的eclipse,故视图界面默认 为使用Jav ...
- Xcode界面切换动画效果
CATransition *animation = [CATransition animation]; [animation setDuration:0.2f]; [animation setTimi ...
- python+Appium自动化:Appium-desktop界面简介
Appium Desktop是一款适用于Mac,Windows和Linux的开源应用程序,提供了更加优化的图形界面. Appium Desktop是由Simple.Advanced.Presets三个 ...
- 国产网络损伤仪SandStorm -- 主界面简介
国产网络损伤仪SandStorm可以模拟出带宽限制.时延.时延抖动.丢包.乱序.重复报文.误码.拥塞等网络状况,在实验室条件下准确可靠地测试出网络应用在真实网络环境中的性能,以帮助应用程序在上线部署前 ...
- Linux安装界面简介
1.安装欢迎界面:install or upgrade an exsiting system:安装或升级现有系统 install system with basic video driver:安装过程 ...
- Mondrian Schema workbench工作界面 简介(实在懒得写,居然有人弄了,收藏了)
转自:http://hi.baidu.com/dinguangx/item/37e78be29aebc1adcf2d4f89 Schema Schema 定义了一个多维数据库.包含了一个逻辑模型,而这 ...
随机推荐
- 第九章 jQuery验证插件简介
1. 表单验证插件-----Validation <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- ubuntu(16.04.01)学习-day2
1.建立硬链接: ln main.c mainsoft 2.建立软链接:ln -s main.c soft 3.对文档进行统计 wc main.c返回行.单词数和字符数 4.查看相应命令的描述 wha ...
- ubuntu(16.04.01)学习-day1
1.修改root用户密码 sudo passwd root 按提示进行设置. 2.从Ubuntu 16.04开始,用户可以实现改变启动器的位置,可以将启动器移到屏幕底部,但是无法移到右边或顶部.打开终 ...
- 远程连接MySql连不上1130
mysql数据库user表中已存在主机=%的用户root,连接却提示1130. 用navicat开启user表>>>>在表里直接修改%账户root的密码(看到是未加密过的内容) ...
- vs2012如何创建报表
引自百度文库,介绍的比较详细 http://wenku.baidu.com/view/c405d5f48762caaedc33d405.html
- 设置一个View的背景图片的集中方法
控制器view的背景图片的方法, 四种: 1.直接在控制器view上添加一个imageView大小设置的和view一样 UIImageView *beijingimage = [UIImageView ...
- (转).NET技术+25台服务器怎样支撑世界第54大网站
英文原文:StackOverflow Update: 560M Pageviews A Month, 25 Servers, And It's All About Performance StackO ...
- css笔记——区分css3中的transform transition animation
出处:http://blog.csdn.net/dyllove98/article/details/8957232 CSS3中和动画有关的属性有三个 transform. transition ...
- Js 对象三
一.screen对象 Width:屏幕的宽度 Height:屏幕的高度 availWidth:屏幕的有效宽度 availhHeight:屏幕的有效高度 (不包含任务栏) colorDepth:色深 二 ...
- c#索引器的简单用法
abstract class Bird { protected string name; public abstract string Name { get; set; } public abstra ...