标签 xcode 下的文章

Xcode Code Snippets
在Double Encore,我们写的代码都是干净,可重用的——不过,有时候并不能完全做到。如在使用pragma mark的时候。下面就是一个示例:
#pragma mark - UIViewController overrides
通过pragma mark,可以让代码看起来既整洁又有组织。虽然这很重要,但是会带来额外的输入操作和时间。此时,我们可以使用code snippets。
通过code snippets,我们可以创建一些可重用的代码块,并且在任何需要的地方很容易的就可以使用这些代码块。这可以节省输入需要的操作和时间。并且,一旦你学会使用code snippets,会发现你可以创建并扩充自己的code snippet library。
创建一个code snippet非常简单。首先,打开Xcode并在utilities panel中选择code snippet library。
上图中,可以看到在code snippet library中已经有一些数据了。
接着,输入希望创建的code snippet。在这里,我为pragma mark创建一个code snippet。如下图所示,在代码编辑器中输入 “#pragma mark – UIViewController overrides”。
选中代码块,如下图所示:
然后单击并按住代码块,知道文本光标变为箭头光标。接着将代码块拖放到code snippet library中,然后松开鼠标。如下图所示
此时会弹出一个popover,通过该popover可以对新的code snippet进行编辑,如下图所示。
首先,是定snippet的名字。这里我指定为“Pragma Mark”
然后,指定该snippet的completion shortcut(可选项)。这里我指定为“pm”。这样设置以后,在Xcode的代码编辑器中只需要输入快捷方式(pm),就能简单的将这个snippet添加到代码中。非常有用!
接着,可以看到在上面的示例中,pragma mark的标题是“UIViewController overrides”,不过我们是希望对其修改一下,以能够很容易的输入任意标题。
我们可以简单的将code snippet包含的文本内容修改为“#pragma mark – “即可。不过,这里还有更好的一个办法——将文本块封装到“<#” 和 “#>”中间,这样code snippet将指出我们可以插入自定义文本的完整范围。
下面,将“UIViewController overrides”替换为“<#Title#>”。
注意,completion scopes字段在这里并没有做修改,通过该字段可以指定completion shortcut的有效范围。
最后,点击edit按钮,以完成snippet的编辑。之后可以在这个popover画面中看到最终结果的一个预览效果。
然后点击popover中的done按钮。下面,你可以将我们在代码编辑器中为创建snippet而写入的文本行删除掉。
现在来试用一下刚刚创建的snippet!有两种方法。第一种是在code snippet library中找到snippet,然后用鼠标将其拖拽到代码编辑器中…
...然后松开鼠标。
一旦将snippet拖放到代码编辑器之后,就可以通过点击键盘上的tab键在不同的completion字段间移动焦点。
第二种方法是在代码编辑器里简单的输入completion shortcut中设置的内容即可。我们这里是“pm”。
然后点击键盘中的return键,就可以将snippet插入到代码编辑器中。
很简单吧!现在你已经知道如何创建自己的snippet了,你将发现这非常的有用。任何时候,你都遇到重复输入的相同代码块,都可以考虑将其添加到你的code snippets library中。
下面是我经常使用到的一些snippet:
Title: Animation Block
Completion Shortcut: ab
Completion Scopes: Function or Method
void (^<#Title#>)(void) = ^{ };
Title: Animation Completion Block
Completion Shortcut: acb
Completion Scopes: Function or Method
void (^<#Title#>)(BOOL) = ^(BOOL finished) { };
Title: Notification Add
Completion Shortcut: na
Completion Scopes: Function or Method
[[NSNotificationCenter defaultCenter] addObserver:<#Observer#> selector:<#Selector#> name:<#Name#> object:<#Object#>];
Title: Notification Remove
Completion Shortcut: nr
Completion Scopes: Function or Method
[[NSNotificationCenter defaultCenter] removeObserver:<#Observer#> name:<#Name#> object:<#Object#>];
Title: NSLog
Completion Shortcut: log
Completion Scopes: Function or Method
NSLog(@"<#Log#>");
Title: Private Interface
Completion Shortcut: pi
Completion Scopes: Top Level
@interface <#Title#> ()
@end
Title: Property Assign
Completion Shortcut: pa
Completion Scopes: All
@property (assign, nonatomic)
Title: Property Strong
Completion Shortcut: ps
Completion Scopes: All
@property (strong, nonatomic)
Title: Property Unsafe Unretained
Completion Shortcut: pu
Completion Scopes: All
@property (unsafe_unretained, nonatomic)
来源http://www.cocoachina.com/industry/20130604/6336.html

Xcode 教程之调试视图层次结构
Xcode开发,当我们需要调整/检查UI时正确的处理方式是什么?
答案:debug view hierarchy
debug view hierarchy
P.s. 下面是为什么要使用debug view hierarchy,没时间的读者自行略过
很多人知道
很多人不知道
很多人知道仅仅了解了一下
少部分的人知道了解,并经常用它辅助开发。
范子属于知道作为新功能仅仅了解了一下。包括之前的Mac软件reveal。
因为实际的开发过程中,并不是很关心UI的处理,毕竟前期要先保证业务逻辑正确,后期还有调整&测试UI的过程。
然而在这次的产品在上线之前临时提出调整UI的需求,在调整UI的过程中,让范子重新审视了一下自己画UI的过程是否合理。
其实范子之前就知道自己画UI很不用心,或者说没有给予足够的重视,在整个产品开发过程中,经常出现后期调整,耽误工程进度的情况。
这次的反思并不是因为影响进度,而是基于自身的编码习惯的反思审视。我们可以通过debug view hierarchy一次完成完美的代码布局,并以此优化自己代码布局逻辑,其实是有助于提升自己的编码水平的。
以前是因为没有合适的工具比如reveal收费昂贵。现在Xcode早就原生支持了,那么我们也就不应错过这个可以提升效率的工具。
完!

头文件引用

头文件引用主要由#inlude 和#import 两种。每种又分为尖括号(<>)引用和双引号(" ")引用 。
#inlude#import 的区别是:
#import 不会造成重复引用,它会自己检查是否已经引用过,也可以防止递归包含。
尖括号(<>)引用与双引号(" ")引用的区别是:
双引号(" ")引用的文件,编译器会首先在存储源文件的同一目录下搜索,如果文件没有找到编译器会搜索默认目录(配置文件中配置的头文件引用目录)。
尖括号(<>)引用 只会在默认目录下搜索。
换句话说 双引号引入的方式其搜索目录的范围要更大,当然效率差一点。
双引号引用范围=源文件目录+默认目录
尖括号引用范围=默认目录

xcode文档注释规则简要汇总
参考源
类与协议

/** 文档B.
 *
 * 文档B的详细描述.
 */
@interface DocB : NSObject
/// 文档A.
@interface DocA : NSObject

文本链接

/**
 * - [文档B](DocB) : 类的链接文本.(仅appledoc)
 */

单行注释

///# 标题1
///## 标题2
///hello oc,下面的空行是为了换行
///
///hello swift
/// - 这里使用了无序列表
/// - 使用加粗 **this**, 使用斜体 _this_
/// - 添加一个链接: [百度](http://www.baidu.com)
/// - 添加一个图片:![swift picture](http://img0.imgtn.bdimg.com/it/u=14209024,814391630&fm=21&gp=0.jpg )

多行注释文档

/**
    多行注释文档相比于普通多行注释多了一个星号。
    在这里可以使用markDown语法,书写各种提示信息
    如:显示一个有序列表
    1. 有序列表
    2. 有序列表
    3. 有序列表
*/

方法/函数的注释
方法的注释包括传入参数、返回值、和异常等说明

/**
 初始化 数据和颜色值
 @param frame      frame
 @param dataItems  数据集
 @param colorItems 色值集
 @return self
 */
 - (id)initWithFrame:(CGRect)frame dataItems:(NSArray*)dataItems colorItems:(NSArray*)colorItems;

今天想使用一个IDE来开发Python,省的每次写完后都要在terminal上敲命令。选来选去,既然已经安装了Xcode就先用他吧。

那么怎么才能使用Xcode创建并运行Python文件呢?

必要准备:mac & Xcode


开发环境整理:


1.1 创建

creat

1.2 选择mac跨平台应用

select product

1.3 添加项目名称

add productName

2.1 添加文件

add file

2.2 Other > Empty

Other > Empty

2.3 给文件命名

给文件命名
named

3.1 Product > Scheme > Edit Scheme

Edit Scheme

3.2 Run > info > Executable > Other

Executable

3.3 Command+Shift+G 定位文件路径Go to the folder:填写/usr/bin/python

path

3.4 确认选中的可执行文件

comfirm

3.5 确认Executable 选中python Debug executable 不用选中

Executable

3.6 Arguments > + >新建的文件名

Arguments

3.7 Options > Working Directory >项目路径

Working Directory
选择文件
select path

3.8 确认设置

comfirm

4 运行

print "hello world"
run