#import <Foundation/Foundation.h>
@interface TreeNode : NSObject
@property (nonatomic, retain)NSString *name;
@property (nonatomic, retain)NSMutableArray *subnodes; //子节点
//父对象会强引用子对象,子对象不能强引用父对象(子对象强引用父对象会造成:循环引用会造成内存空洞)
//父对象在生命周期内会对子对象引用计数器+1,如果子对象强引用父对象会造成父对象引用计数器+1,彼此释放时都持有最后一次造成内存空洞
@property (nonatomic, assign)TreeNode *superNode; //父节点
- (id)initWithName:(NSString *)name;
+ (id)treeNodeWithName:(NSString *)name;
- (TreeNode *)getSubnodeWithName:(NSString *)name;
- (TreeNode *)getAnyNodeWithName:(NSString *)name;
//遍历所有节点
+ (void)traverseAllNode:(TreeNode *)root;
@end
#import "TreeNode.h"
@implementation TreeNode
- (void)dealloc
{
[_name release];
[_subnodes release];<