一点一滴,编程人生

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  69 随笔 :: 0 文章 :: 25 评论 :: 0 Trackbacks

有时我们写个代码开源出来给别人用时,会被其他开发者抱怨编译不了,很多情况是版本的问题,尤其现在ARC的出现后关于weak,strong的问题让人头疼。
有个开源代码这里做的很不错,就是MBProgressHUD
看下他是怎么做的:

  1. #ifndef MB_STRONG
  2. #if __has_feature(objc_arc)
  3.     #define MB_STRONG strong
  4. #else
  5.     #define MB_STRONG retain
  6. #endif
  7. #endif
  8.  
  9. #ifndef MB_WEAK
  10. #if __has_feature(objc_arc_weak)
  11.     #define MB_WEAK weak
  12. #elif __has_feature(objc_arc)
  13.     #define MB_WEAK unsafe_unretained
  14. #else
  15.     #define MB_WEAK assign
  16. #endif
  17. #endif

非ARC的retain,相当于ARC的strong
iOS5的ARC中weak能在销毁时自动赋值nil,这是iOS4.x上使用ARC不具备,所以用的unsafe,非ARC自然是assign

posted on 2012-04-23 15:49 writegull 阅读(1415) 评论(0)  编辑  收藏 所属分类: iphone

只有注册用户登录后才能发表评论。


网站导航: