XCode技巧之UserScripts

On 03/17/2011, in iOS Dev, Mac Dev, by ultragtx

XCode作为一款强大的IDE,当然也支持脚本功能。通过添加自己的脚本我们可以很方便的完成我们的工作。

在XCode中点击 Edit User Scripts即可方便的添加脚本,而且XCode自带的脚本也相当于给我们提供了丰富的样例。

比如我们添加一个这样的脚本,并为其添加一个快捷键⇧⌘P(快捷键添加方法参考Comments分类中的Un/Comment Selection脚本)

 

1
2
3
4
5
6
#!/bin/sh
 
echo "%%%{PBXSelection}%%%"
echo "#pragma mark -"
echo "#pragma mark %%%{PBXSelectedText}%%%"
echo "%%%{PBXSelection}%%%"

注意在Output下拉列表中选择Replace Selection。这个脚本的作用是方便我们建立#pragma,首先提供pragma的名字,然后选中这个名字,按相应快捷键,#pragma就自动完成了,很方便。

这个脚本也可以这样写,我们就不用每行都写echo了

 

1
2
3
4
5
6
7
8
#!/bin/sh
 
cat << EOF
%%%{PBXSelection}%%%
#pragma mark -
#pragma mark %%%{PBXSelectedText}%%%
%%%{PBXSelection}%%%
EOF

除了bash脚本,XCode还支持Ruby,Python等多种语言的脚本,比如这个Ruby脚本

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env ruby -w
 
# Source: http://allancraig.net/blog/?p=315
 
properties = ''
synthesize = ''
release    = ''
 
STDIN.read.each do |line|
	line.gsub!(/\*/, '').strip!
	words = line.split(/\s+/)
 
	label = words.size > 2 ? words[1] : words[0]
	variable = words[-1]
	properties << "@property (nonatomic, retain) IBOutlet #{label} *#{variable}\n"
	synthesize << "@synthesize #{variable}\n"
	release << "[#{variable.chop} release];\n"
end
 
synthesize << release.chomp
 
`echo '#{synthesize.chomp}' | pbcopy`
print properties.chomp

该脚本的作用是帮助我们添加@property、@synthesize、还有dealloc方法中相应的release。使用方法是选中.h文件中的成员变量,比如我们选中UIButton *aButton;,复制到要添加@property的位置,再次选中,按快捷键执行脚本,@property就添加完成了,然后到相应的.m文件中,在要添加@synthesize的位置按⌘V粘贴,@synthesize也添加好了,同时复制过来的还有[aButton release];,选中这行,剪切粘贴到dealloc方法中,大功告成。使用这个脚本不仅可以快速添加@property @synthesize,同时也避免了变量名写错所造成的一些问题。

Tagged with:  

2 Responses to XCode技巧之UserScripts

  1. yunpu说道:

    Hi 博主,很感兴趣这篇文章.自己也试了试,但执行的结果是:
    /var/folders/H4/H4LBOBHUFM4seGIfA6ySSk+++TM/-Tmp-/E7CCA94B-DF4B-471E-B3CB-4ADAED08835A-235-000053143B8F99BF: line 7: properties: command not found
    /var/folders/H4/H4LBOBHUFM4seGIfA6ySSk+++TM/-Tmp-/E7CCA94B-DF4B-471E-B3CB-4ADAED08835A-235-000053143B8F99BF: line 8: synthesize: command not found
    /var/folders/H4/H4LBOBHUFM4seGIfA6ySSk+++TM/-Tmp-/E7CCA94B-DF4B-471E-B3CB-4ADAED08835A-235-000053143B8F99BF: line 9: release: command not found
    /var/folders/H4/H4LBOBHUFM4seGIfA6ySSk+++TM/-Tmp-/E7CCA94B-DF4B-471E-B3CB-4ADAED08835A-235-000053143B8F99BF: line 11: STDIN.read.each: command not found
    /var/folders/H4/H4LBOBHUFM4seGIfA6ySSk+++TM/-Tmp-/E7CCA94B-DF4B-471E-B3CB-4ADAED08835A-235-000053143B8F99BF: line 11: line: command not found
    /var/folders/H4/H4LBOBHUFM4seGIfA6ySSk+++TM/-Tmp-/E7CCA94B-DF4B-471E-B3CB-4ADAED08835A-235-000053143B8F99BF: line 12: syntax error near unexpected token `/\*/,’
    /var/folders/H4/H4LBOBHUFM4seGIfA6ySSk+++TM/-Tmp-/E7CCA94B-DF4B-471E-B3CB-4ADAED08835A-235-000053143B8F99BF: line 12: ` line.gsub!(/\*/, ”).strip!’

    不懂python,还请指教?多谢

发表评论

电子邮件地址不会被公开。 必填项已用*标注