 
     func actionSheet(actionSheet: UIActionSheet, didDismissWithButtonIndex buttonIndex: Int) {
       originalDelegate?.actionSheet?(actionSheet, didDismissWithButtonIndex: buttonIndex)
-    }
-  }
-}
+      self.actionSheet.strongDelegate = nil
+    }
+  }
+}

extension UIActionSheet {
  var strongDelegate: ActionSheetDelegate? {
    get {
      return (objc_getAssociatedObject(self, &associatedObjectHandle) as! ActionSheetDelegate)
    }
    set {
      objc_setAssociatedObject(self, &associatedObjectHandle, newValue, associationPolicy)

      originalDelegate?.actionSheet?(actionSheet, clickedButtonAtIndex: buttonIndex)

      source.resolve(buttonIndex)
    }

    func actionSheetCancel(actionSheet: UIActionSheet) {
