XCode文档注释
使用Xcode的User Scripts可以很方便的为代码添加注释,方法如下
整行选中下面的代码,因为默认的Insert @method template脚本解析的问题,你需要保证+/-号后面有一个空格,否则插入注释时会出现问题。
+ (NSData *) captureScreenWithSize:(CGSize) captureSize atView:(UIView *)view;
选择HeaderDoc中的Insert @method template脚本,即可方便的插入脚本,插入代码大致如下
同样,我们可以生成其他代码注释,如header,class,protocol等。
我们可以修改默认的Insert @method template脚本,让其支持+ (NSData *)这样中间没有空格的情况。方法如下
选择Edit User Scripts…
打开Insert @method template,将其中的代码替换为如下代码
#! /usr/bin/perl -w # # Inserts a template HeaderDoc comment for an # Objective-C method. # If the user selects a method declaration and # chooses this command, the template includes # the method name and the names of each parameter. # If the user doesn't select a declaration before issuing # this command, a default template is inserted. use strict; my $selection = <<'SELECTION'; %%%{PBXSelectedText}%%% SELECTION chomp $selection; my $unmodifiedSelection = $selection; # used to retain linebreaks in output $selection =~ s/\n/ /sg; # put on one line, if necessary $selection =~ s/\s+$//; # remove any trailing spaces $selection =~ s/\s{2,}/ /g; # regularize remaining spaces my $displayMethodName= ''; my $returnsAValue= 0; my @params = (); # is it a method declaration that we understand? if (length($selection) && ($selection =~ /^[+-]/) && ($selection =~ /;$/)) { # determine if it returns a value $selection =~ m/[+-]\s*(\((.*?)\))?\s*(.*);/; my $return = $2; my $fullMethodName = $3; if ((defined($return)) && ($return ne 'void') && ($return ne 'IBAction')) {$returnsAValue=1;}; if (defined($fullMethodName)) { # get rid of type info for args $fullMethodName =~ s/\(.*?\)//g; if ($fullMethodName =~ /:/) { # get keyword:arg pairs my @keyArgPairs = split(/\s+/, $fullMethodName); foreach my $pair (@keyArgPairs) { if ($pair =~ /:/) { # don't treat parameters with spaces as method names my @parts = split(/:/, $pair); while (@parts) { $displayMethodName .= shift(@parts).":"; push (@params, shift @parts); } } else { if (length($pair)) { # but do add them to the parameter list push (@params, $pair); } } } } else { $displayMethodName = $fullMethodName; } } } print "/*!\n"; print " \@method $displayMethodName\n"; print " \@abstract %%%{PBXSelection}%%%<#(brief description)#>%%%{PBXSelection}%%%\n"; print " \@discussion <#(comprehensive description)#>\n"; foreach my $param (@params) { print " \@param $param <#(description)#>\n" if (defined($param)); } print " \@result <#(description)#>\n" if ($returnsAValue); print "*/\n"; print $unmodifiedSelection; exit 0;
另外,HeaderDoc中没有提供给property插入注释的代码, 我们可以加入如下代码来实现给property添加注释
#! /usr/bin/perl -w # Insert HeaderDoc template for class # by xeonwell use strict; my $selection = <<'SELECTION'; %%%{PBXSelectedText}%%% SELECTION chomp $selection; my $unmodifiedSelection = $selection; $selection =~ s/\n/ /sg; # put on one line, if necessary $selection =~ s/\s+$//; # remove any trailing spaces $selection =~ s/\s{2,}/ /g; # regularize remaining spaces $selection =~ s/;$//; my @params = split(/\s/, $selection); my $pname = $params[scalar(@params)-1]; $pname =~ s/^\*//; print "/*!\n"; print " \@property $pname\n"; print " \@abstract %%%{PBXSelection}%%%<#(brief description)#>%%%{PBXSelection}%%%\n"; print "*/\n"; print $unmodifiedSelection; exit 0;
为了比较方便的插入文档注释, 我们还可以为这些脚本设置快捷键,当选中需要添加注释的method、property等时,直接按快捷键即可。
完成这些步骤之后,使用如下的方法来生成我们需要的注释
方法一:开启一个终端,然后切换到项目所在文件夹,运行如下命令
headerdoc2html –o hdoc *.h gatherheaderdoc hdoc
方法二:使用doxygen来生成文档, 参考地址