A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王雪冬 中级黑马   /  2014-4-14 14:54  /  1054 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由  王雪冬 于 2014-4-14 16:20 编辑

请看下面代码:
  1. #import <Foundation/Foundation>

  2. @class Person;   //Person是一个类名

  3. @interface Card :NSObject

  4. @property (nonatomic,assign) Person *person

  5. @end
复制代码




视频中不是说,assign是用来修饰非OC对象的吗?


可是代码中:


  1. @property (nonatomic,assign) Person *person<span style="background-color: rgb(255, 255, 255); line-height: 1.5;">     </span>
复制代码


却修饰了Person 变量,为什么?不是应该使用retain修饰吗?

在什么情况下应该用assign修饰OC对象呀?

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
这个应该是些写错了吧。。
assign确实是用来修饰非OC对象的。

评分

参与人数 1黑马币 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
这个是视频里的代码。原封不动
回复 使用道具 举报
在循环引用的情况下用assign修饰OC对象:
循环retain
如果a对象retain了b对象,b对象也retain了对象,这样会导致a对象和b对象永远都无法释放。
解决办法:当两端相互引用时,一端用retain,一端用assign。

评分

参与人数 1黑马币 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马