Skip to content

Allow to associate any type of object #151

@Igor-Palaguta

Description

@Igor-Palaguta

Very useful to associate any type of object: structs/enums
currently associatedObject allows to associate just AnyObject instances

private class Box<T> {
   let unbox: T
   init(_ value: T) {
      self.unbox = value
   }
}

extension NSObject {
   public final func associatedObject<T>(key key: UnsafePointer<()>, @noescape initial: () -> T) -> T {
      if let boxedObject = objc_getAssociatedObject(self, key) as? Box<T> {
         return boxedObject.unbox
      }
      let object = initial()
      objc_setAssociatedObject(self, key, Box(object), .OBJC_ASSOCIATION_RETAIN)
      return object
   }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions