Skip to content

Commit 77f6662

Browse files
committed
update ARC
1.“显式”应为“隐式” 2.修改一些翻译不恰当的地方
1 parent 69d1af0 commit 77f6662

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

source/chapter2/16_Automatic_Reference_Counting.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -331,15 +331,15 @@ Swift 提供了两种办法用来解决你在使用类的属性时所遇到的
331331

332332
为了满足这种需求,通过在类型结尾处加上感叹号(City!)的方式,将`Country``capitalCity`属性声明为隐式解析可选类型的属性。这表示像其他可选类型一样,`capitalCity`属性的默认值为`nil`,但是不需要展开他的值就能访问它。([在隐式解析可选类型中有描述](01_The_Basics.html)
333333

334-
由于`capitalCity`默认值为`nil`,一旦`Country`的实例在构造函数中给`name`属性赋值后,整个初始化过程就完成了。这代表一旦`name`属性被后`Country`的构造函数就能引用并传递显式的`self``Country`的构造函数在赋值`capitalCity`时,就能将`self`作为参数传递给`City`的构造函数。
334+
由于`capitalCity`默认值为`nil`,一旦`Country`的实例在构造函数中给`name`属性赋值后,整个初始化过程就完成了。这代表一旦`name`属性被赋值后`Country`的构造函数就能引用并传递隐式的`self``Country`的构造函数在赋值`capitalCity`时,就能将`self`作为参数传递给`City`的构造函数。
335335

336336
以上的意义在于你可以通过一条语句同时创建`Country``City`的实例,而不产生循环强引用,并且`capitalCity`的属性能被直接访问,而不需要通过感叹号来展开它的可选值:
337337

338338
var country = Country(name: "Canada", capitalName: "Ottawa")
339339
println("\(country.name)'s capital city is called \(country.capitalCity.name)")
340340
// prints "Canada's capital city is called Ottawa"
341341

342-
在上面的例子中,使用隐式解析可选值的意义在于满足了两个类构造函数的需求。`capitalCity`属性在初始化完成后,能作为非可选值使用同事还避免了循环强引用
342+
在上面的例子中,使用隐式解析可选值的意义在于满足了两个类构造函数的需求。`capitalCity`属性在初始化完成后,能像非可选值一样使用和存取同时还避免了循环强引用
343343

344344
<a name="strong_reference_cycles_for_closures"></a>
345345
##闭包引起的循环强引用

0 commit comments

Comments
 (0)