lib/motion/accessors.rb in rm-extensions-0.5.0 vs lib/motion/accessors.rb in rm-extensions-0.5.1

- old
+ new

@@ -2,24 +2,24 @@ module ObjectExtensions module Accessors - # creates an +attr_accessor+ like behavior, but the objects are - # stored with a WeakRef. - # does not conform to KVO like attr_accessor does. - def rmext_weak_attr_accessor(*attrs) - attrs.each do |attr| - define_method(attr) do - instance_variable_get("@#{attr}") - end - define_method("#{attr}=") do |val| - instance_variable_set("@#{attr}", WeakRef.new(val)) - val - end - end - end + # # creates an +attr_accessor+ like behavior, but the objects are + # # stored with a WeakRef. + # # does not conform to KVO like attr_accessor does. + # def rmext_weak_attr_accessor(*attrs) + # attrs.each do |attr| + # define_method(attr) do + # instance_variable_get("@#{attr}") + # end + # define_method("#{attr}=") do |val| + # instance_variable_set("@#{attr}", val.nil? ? nil : WeakRef.new(val)) + # val + # end + # end + # end # creates an +attr_accessor+ like behavior, but the objects are # stored in an NSMapTable with strong keys (the attrs) and # weak values. If the value deallocates, it becomes nil, unlike # a traditional WeakRef. @@ -36,9 +36,10 @@ @__zeroing_weak_holders.setObject(val, forKey:attr) val end end end + alias_method :rmext_weak_attr_accessor, :rmext_zeroing_weak_attr_accessor end end