高效开发iOS系列(runtime篇) -- 巧妙运用对象关联(Associated Objects)来设计alertview

本文介绍了如何使用Objective-C的Associated Objects来优雅地处理UIAlertView的事件处理,避免繁琐的delegate方法,提高iOS开发效率。通过创建category,将delegate职责转移,并使用block进行回调,实现更简洁的代码结构。
摘要由CSDN通过智能技术生成

热身 (简单介绍)


这个鬼(objc_AssociationPolicy : 对象关联)可以给某对象关联其他对象, 这些对象通过"键"来区分. 存储对象值的时候, 可以指明"存储策略", 用以维护相应的"内存管理语义".存储策略由名为objc_AssociationPolicy的枚举所定义. 同时拥有与之等效@property的属性. … (此处省略十万字的理论)

本篇重点是讲述如何巧妙利用这个东西(关联), 来让我们高效的编写objective-c. 也可以理解为实战篇.

高效开发iOS系列里, 大部分都是偏向于实战的技巧方法与总结来提升iOS开发效率, 几乎都不讲理论,所以需要具备一点基础. 而本篇讲的则是objc_AssociationPolicy(关联)alertview之间的实战技巧, 如果还不会Associated Objects 或者想要更深入更全面的认识Associated Objects理论的小伙伴们, 可以查看这篇理论篇文章入门 : http://blog.csdn.net/biggercoffee/article/details/50135477

来一起干一票


繁琐的alertview的事件处理, 早就看它不爽了

// button 点击执行的方法
- (IBAction)alertClick:(id)sender {
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"title" message:@"message" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"ok", nil];
    [alertView show];
}
// alertview 点击执行的delegate方法,前提 需要self实现UIAlertViewDelegate协议
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    NSLog(@"执行逻辑操作");
}


如上代码, 这样写确实没错, 但是如果一个页面有多个alertview, 而且点击的时候都要执行不同的逻辑尼? 则要在alertview的delegate方法中写很多的if else 语句, 可读性,扩展性等等都非常差, 如下代码示例:

// button1 点击执行的方法
- (IBAc
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值