创建 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 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界面简介的更多相关文章

  1. 零元学Expression Design 4 - Chapter 1 入门界面简介

    原文:零元学Expression Design 4 - Chapter 1 入门界面简介 Expression Design 是Expression系列里面的一员,更是Blend跟Web的好帮手 而在 ...

  2. 零元学Expression Blend 4 - Chapter 2 入门界面简介

    原文:零元学Expression Blend 4 - Chapter 2 入门界面简介 在这篇教学我将会介绍Expression Blend 4的基本界面,虽然有些网站已经有做了介绍,为了整个教学的完 ...

  3. Charles系列一:Charles功能介绍、下载安装和界面简介

    一:Charles主要功能介绍 Charles是一个HTTP代理/HTTP监视器/反向代理,使开发和测试人员能够查看机器和Internet之间所有的HTTP和SSL/HTTPS流量,这包括请求,响应. ...

  4. Eclipse界面简介

    下载安装完成后,Eclipse的界面如下: (6)为eclipse的perspective(视图方案)由于安装的是for Java development的eclipse,故视图界面默认 为使用Jav ...

  5. Xcode界面切换动画效果

    CATransition *animation = [CATransition animation]; [animation setDuration:0.2f]; [animation setTimi ...

  6. python+Appium自动化:Appium-desktop界面简介

    Appium Desktop是一款适用于Mac,Windows和Linux的开源应用程序,提供了更加优化的图形界面. Appium Desktop是由Simple.Advanced.Presets三个 ...

  7. 国产网络损伤仪SandStorm -- 主界面简介

    国产网络损伤仪SandStorm可以模拟出带宽限制.时延.时延抖动.丢包.乱序.重复报文.误码.拥塞等网络状况,在实验室条件下准确可靠地测试出网络应用在真实网络环境中的性能,以帮助应用程序在上线部署前 ...

  8. Linux安装界面简介

    1.安装欢迎界面:install or upgrade an exsiting system:安装或升级现有系统 install system with basic video driver:安装过程 ...

  9. Mondrian Schema workbench工作界面 简介(实在懒得写,居然有人弄了,收藏了)

    转自:http://hi.baidu.com/dinguangx/item/37e78be29aebc1adcf2d4f89 Schema Schema 定义了一个多维数据库.包含了一个逻辑模型,而这 ...

随机推荐

  1. Linux 内核配置和编译

    Linux 内核配置和编译 一.配置内核 (1). 为什么要配置内核 1. 硬件需求 2. 软件需求 选出需要的,去掉不要的 (2). 如何配置内核 1. make  config 基于文本模式的交互 ...

  2. poj2243

    Knight Moves Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13433   Accepted: 7518 Des ...

  3. Html5中的video元素

    最近在做门户的时候遇到要显示企业的视频介绍,需要找到一个在aspx页面播放视频的html,最后找到了是一段HTML5最新的html代码,如下: /// <summary> /// 播放视频 ...

  4. ms mpi error: unable to allocate launching block

    问题描述: 在VS 2015中使用Microsoft MPI(ms mpi)构建控制台应用,使用" mpiexec -n 4 myprog.exe"运行时退出并提示"un ...

  5. asp.net C#数据导出Excel实例介绍

    excel导出在C#代码中应用己经很广泛了,我这里就做些总结,供自己和读者学习用. Excel知识点. 一.添加引用和命名空间 添加Microsoft.Office.Interop.Excel引用,它 ...

  6. 第二篇、倾力总结40条常见的移动端Web页面问题解决方案

    1.安卓浏览器看背景图片,有些设备会模糊.   用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率 ...

  7. Objective-C 【多个对象内存管理(野指针&内存泄漏)】

    ------------------------------------------- 多个对象内存管理(野指针&内存泄漏) (注:这一部分知识请结合"单个对象内存管理"去 ...

  8. Mingw64编译wxWidgets3.0.2常见错误

    使用Mingw64编译wxWidgets3.0.2,首先得下载wxMSW-Setup-3.0.2.exe(https://sourceforge.net/projects/wxwindows/file ...

  9. iOS 非ARC基本内存管理系列 4-autorelease方法和@autoreleasepool

    1.autorelease 基本用法 对象执行autorelease方法时会将对象添加到自动释放池中 当自动释放池销毁时自动释放池中所有对象作release操作 对象执行autorelease方法后自 ...

  10. Open Live Writer增加代码插件

          作为一名程序员,免不了和代码打交道,自然在写博客的时候,也会用到代码的展示,Open Live Writer确实是一个不错的工具,不用再去登录博客的后台,就可以在本地进行文章的编写,但是致 ...