Node节点需要用来重用,它的children的所有者应该只有它自己

所以这个children的setter需要自己写,类似于

这里注意一下内存管理。

 
  
  1. -(void)setChildren:(NSMutableArray*)array 
  2.     NSMutableArray * temp = [[NSMutableArray arrayWithArray:array]retain]; 
  3.     [children release]; 
  4.     children = temp; 

决定是否是叶结点的属性的setter也需要自己写

 

 
  
  1. -(void)setIsLeaf:(BOOL)leaf 
  2.     if (leaf) 
  3.     { 
  4.         self.children = [NSMutableArray arrayWithObject:self]; 
  5.     } 
  6.     else  
  7.     { 
  8.         self.children = [NSMutableArray array]; 
  9.     } 
  10. isLeaf = leaf; 

要点不多,但是需要很小心。