From ee9243798a9d1a1be781a370348ca853ef15e279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E5=8D=9A=40iOS=E7=A8=8B=E5=BA=8F=E7=8A=AD?= =?UTF-8?q?=E8=A2=81?= Date: Thu, 1 Oct 2015 00:32:17 +0800 Subject: [PATCH] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改了[Init 和 Dealloc ](https://github.com/ChenYilong/objc-zen-book-cn#init-和-dealloc) 的描述部分,翻译的明显错误,估计译者并没有理解原文的真实意思。这个部分我在我的一篇博客里进行过详细的描述 [《招聘一个靠谱的iOS》面试题参考答案(上)----21题](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#21-下面的代码输出什么) ,并且我也给出了一个简单明了说明该问题的 Demo。 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8efe917..984b754 100644 --- a/README.md +++ b/README.md @@ -961,7 +961,7 @@ NSString * text; #### Init 和 Dealloc -有一个例外:你永远不能在 init (以及其他初始化函数)里面用 getter 和 setter 方法,并且你直接访问实例变量。事实上一个子类可以重载 setter 或者 getter 并且尝试调用其他方法,访问属性的或者 ivar 的话,他们可能没有完全初始化。记住一个对象是仅仅在 init 返回的时候,才会被认为是初始化完成到一个状态了。 +有一个例外:永远不要在 init 方法(以及其他初始化方法)里面用 getter 和 setter 方法,你应当直接访问实例变量。这样做是为了防止有子类时,出现这样的情况:它的子类最终重载了其 setter 或者 getter 方法,因此导致该子类去调用其他的方法、访问那些处于不稳定状态,或者称为没有初始化完成的属性或者 ivar 。记住一个对象仅仅在 init 返回的时候,才会被认为是达到了初始化完成的状态。 同样在 dealloc 方法中(在 dealloc 方法中,一个对象可以在一个 不确定的状态中)这是同样需要被注意的。