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

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

      source.resolve(buttonIndex)

      self.actionSheet.strongDelegate = nil
    }

    func actionSheetCancel(actionSheet: UIActionSheet) {


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