以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);
}