Skip to content

Instantly share code, notes, and snippets.

@Gurpartap
Created July 21, 2014 22:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Gurpartap/c6e0916d453b1904975f to your computer and use it in GitHub Desktop.
Save Gurpartap/c6e0916d453b1904975f to your computer and use it in GitHub Desktop.
- (void)setCallbackBlock:(void (^)(id object))callbackBlock
{
//set block as an attribute in runtime
if (callbackBlock) {
objc_setAssociatedObject(self, "dismissBlockCallback", [callbackBlock copy], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
return;
}
void (^block)(id obj) = objc_getAssociatedObject(self, "dismissBlockCallback");
if (block)
objc_removeAssociatedObjects(block);
}
//Return YES if there is a block object
- (BOOL)performCallbackBlockWithObject:(id)object
{
//get back the block object attribute we set earlier
void (^block)(id obj) = objc_getAssociatedObject(self, "dismissBlockCallback");
if (block) {
block(object);
return YES;
}
return NO;
}
@Gurpartap
Copy link
Author

Simple Swift conversion attempt:

var dismissBlockCallback : (obj: AnyObject) -> (Void)!

func setCallbackBlock(callbackBlock: (object: AnyObject) -> (Void)) {
    if callbackBlock { // Type '(object: AnyObject) -> (Void)' does not conform to protocol 'LogicValue'
        self.dismissBlockCallback = callbackBlock
    }
    else {
        self.dismissBlockCallback = nil
    }
}

func performCallbackBlockWithObject(object: AnyObject) -> Bool {
    if self.dismissBlockCallback { // '(obj: AnyObject) -> (Void)!' does not conform to protocol 'LogicValue'
        self.dismissBlockCallback(object)
        return true;
    }

    return false;
}

@Gurpartap
Copy link
Author

Take 2

var dismissBlockCallback : ((obj: AnyObject) -> Void)?

func setCallbackBlock(callbackBlock: ((object: AnyObject) -> Void)?) {
    if callbackBlock {
        self.dismissBlockCallback = callbackBlock
    }
}

func performCallbackBlockWithObject(object: AnyObject) -> Bool {
    if self.dismissBlockCallback {
        self.dismissBlockCallback!(obj: object)
        return true
    }
    return false
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment