Objective-C类的图表转化工具ObjCV…

介绍一个很有趣的工具ObjCViz,这个工具的作用简单说来,就是把Objective-C的类转化为图表(参见正文中的图形),这样就可以清晰的看出各个类之间的关系和参数、类成员之间的关系。

 

比如如下的Objective-C的类:

 

@interface Bu : NSObject 

{

NSStringsuperclassIvar;

}

@end

 

@interface Meu : NSObject 

{

id obj;

}

@end

 

@implementation Meu 

 

-(id)init

{

[super init];

obj @"hello";

return self;

}

 

@end

 

 

@interface Zo : Bu 

{

NSString* d;

id e;

}

@end

 

@implementation Zo 

 

-(id)init

{

[super init];

e = [NSScanner 

 scannerWithString:@"scannedString"]

[e retain];

return self;

}

 

@end

 

@interface Ga : NSObject 

{

NSString* strIvar;

NSMutableArray* arrayIvar;

NSMutableDictionary* dictIvar;

ZoboIvar;

}

@end

 

@implementation Ga 

 

-(id)init

{

[super init];

strIvar @"aString";

boIvar = [[Zo allocinit];

arrayIvar = [[NSArray alloc

 initWithObjects:@"aStringInArray",

 [NSDate date], nil];

dictIvar = [[NSMutableDictionary alloc

initWithObjectsAndKeys:boIvar,@"Key1",@"Obj2",@"Key2",nil];

return self;

}

 

@end

 

可以将其转化为下面格式的文本:

 

 

digraph ObjC {

L001 [label="Ga", style=rounded, shape=box];

L001 -> L002 [label="boIvar",fontsize=12];

L001 -> L003 [label="strIvar",fontsize=12];

L001 -> L004 [label="arrayIvar",fontsize=12];

L001 -> L007 [label="dictIvar",fontsize=12];

 

L002 [label="Zo", style=rounded, shape=box];  

L002 -> (null) [label="d",fontsize=12];

L002 -> (null) [label="superclassIvar",fontsize=12];

L002 -> L009 [label="e",fontsize=12];

 

L003 [label="@\"aString\""];  

 

L004 [label="{NSCFArray|{|}}",shape=Mrecord];

        L004:f0 -> L005 [label="0",fontsize=12];

        L004:f1 -> L006 [label="1",fontsize=12];

 

L005 [label="@\"aStringInArray\""];

L006 [label="NSCFDate", style=rounded, shape=box];

 

L007 [label="{NSCFDictionary|{ Key2| Key1}}",shape=Mrecord];

L007:f0 -> L008 [label="Key2",fontsize=12];

L007:f1 -> L002 [label="Key1",fontsize=12];

 

L008 [label="@\"Obj2\""];

 

L009 [label="NSConcreteScanner", style=rounded, shape=box];

L009 -> L010 [label="scanString",fontsize=12];

L009 -> L011 [label="skipSet",fontsize=12];

L009 -> (null) [label="invertedSkipSet",fontsize=12];

L009 -> (null) [label="locale",fontsize=12];

 

L010 [label="@\"scannedString\""];

 

L011 [label="NSBuiltinCharacterSet", style=rounded, shape=box];

L011 -> L012 [label="expandedset",fontsize=12];

 

L012 [label="NSCFCharacterSet", style=rounded, shape=box];

L013 [label="nil"];

}

 

而这段文本可以通过GraphViz这个图表工具转化为下面的图表:

 

 

工具的作者是Olivier Gutknecht,下载地址为:

 

http://people.no-distance.net/ol/software/objcviz/

 

点击左侧的Source Code可以下载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值