def each
      range = CF::Range.new
      range[:location] = 0
      range[:length] = length
      callback = lambda do |value, _|
        yield Base.typecast(value).retain.release_on_gc
      end
      CF.CFArrayApplyFunction(self, range, callback, nil)
      self
    end
def each
      range = CF::Range.new
      range[:location] = 0
      range[:length] = length
      callback = lambda do |value, _|
        yield Base.typecast(value).retain.release_on_gc
      end
      CF.CFArrayApplyFunction(self, range, callback, nil)
      self
    end
Iterates over the array yielding the value to the block
 The value is wrapped in the appropriate CF::Base subclass and retained (but marked for releasing upon garbage collection)
 @return self