美文网首页
iOS-关联对象

iOS-关联对象

作者: 黑酒一 | 来源:发表于2017-04-27 11:14 被阅读0次
    以UIAlertView为例,在创建时,对事件进行处理。
    • objc_setAssociatedObject 此方法以给定的键和策略为某对象设置关联对象值
    • objc_getAssociatedObject 此方法根据给定的键从某对象中获取相应的关联对象值
    • objc_removeAssociatedObjects 此方法移除指定对象的全部关联对象
    // 设置关联对象时,通常使用静态全局变量做键。
    static void * EOCMyAiertViewKey = "EOCMyAiertViewKey";
    
    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Question" message:@"What do you want to do?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Continue", nil];
    
    void(^ block)(NSInteger) = ^(NSInteger buttonIndex) {
        
        // 在这里判断ButtonIndex 做相应处理
    };
    
    objc_setAssociatedObject(alert, EOCMyAiertViewKey, block, OBJC_ASSOCIATION_COPY);
    
    [alert show];
    
    #pragma mark - alertViewDelegate
    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
        
        void(^ block)(NSInteger) = objc_getAssociatedObject(alertView, EOCMyAiertViewKey);
        block(buttonIndex);
    }
    

    相关文章

      网友评论

          本文标题:iOS-关联对象

          本文链接:https://www.haomeiwen.com/subject/xvugzttx.html