Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

第2题 #89

Open
Deeer opened this issue Aug 24, 2017 · 1 comment
Open

第2题 #89

Deeer opened this issue Aug 24, 2017 · 1 comment

Comments

@Deeer
Copy link

Deeer commented Aug 24, 2017

weak 此特质表明该属性定义了一种“非拥有关系” (nonowning relationship)。为这种属性设置新值时,设置方法既不保留新值,也不释放旧值。此特质同assign类似, 然而在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。 而 assign 的“设置方法”只会执行针对“纯量类型” (scalar type,例如 CGFloat 或 NSlnteger 等)的简单赋值操作。

第一,所谓的‘设置方法既不保留新值,也不释放旧值’有什么含义?
第二,这里的 ‘此特质同assign类似’ ,先不说内容,进从语义上讲,似乎标点不对。
第三,‘然而...'之后的内容,和 之后的 ‘而assign...’并没有形成对比

不知是语言组织不对,还是我个人理解错了,望解答

@CoulsonWang
Copy link

谈一下我的理解:
第一,既不保留新值也不释放旧值的含义是指:关键字为strong属性(MRC中的retain属性)的setter方法中,会自动对旧的值进行一次release操作,对新的值进行一次retain操作,也就是保留新值释放旧值。而关键字为weak属性的setter方法则不会进行上述操作。
第二,特质与assign类似是指第一中提到的“既不保留旧值也不释放新值”这个特性,标点的话......确实有误,不过没必要太过纠结吧。
第三,确实答者的语言组织有些不佳,前后没有明显联系。weak属性会自动置为nil之前不需要加“然而”的转折,assign的setter可以另起一个段落单独介绍。

@Deeer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants