修改节点的值

对于 EZRMutableNode\ 类的实例来说,T value属性是可写并且线程安全的。我们可以通过点语法来修改一个可变节点的值,像这样:

  1. EZRMutableNode<NSNumber *> *node = [EZRMutableNode value:@55];
  2. node.value = @82;

有的时候,你希望将一个可变节点重新修改为空值(EZREmpty.empty),由于泛型约束通过点语法会产生警告,你可以使用- (void)clean方法,像这样:

  1. EZRMutableNode<NSNumber *> *node = [EZRMutableNode value:@55];
  2. [node clean]; // <- 修改为 EZREmpty.empty
  3. id value = node.value; // <- EZREmpty.empty

有的时候,你还希望传递过程和接收者获取一些额外的信息,这时你可以利用- (void)setValue:(nullable T)value context:(nullable id)context方法给传递过程附加一个上下文对象,像这样:

  1. EZRMutableNode<NSNumber *> *node = [EZRMutableNode value:@55];
  2. [node setValue:@83 context:@"看,是File1.m写的!"];