Ios 为什么可以';我不能给一个无主常数一个初始值吗?
这将产生以下错误:Ios 为什么可以';我不能给一个无主常数一个初始值吗?,ios,swift,automatic-ref-counting,unowned-references,Ios,Swift,Automatic Ref Counting,Unowned References,这将产生以下错误: class Example {} unowned let first = Example() 我正试图深入了解关键字unowned的确切作用 : 但是,与弱引用不同的是,在 另一个实例具有相同的生存期或更长的生存期 在上面的示例中,只要调用“example()”,您的new属性就会被解除分配(new对于一个属性来说都是一个糟糕的名称,即使只是对于演示:-) 因此,在这里可以起作用的是: Attempted to read an unowned reference but o
class Example {}
unowned let first = Example()
我正试图深入了解关键字unowned
的确切作用 :
但是,与弱引用不同的是,在
另一个实例具有相同的生存期或更长的生存期
在上面的示例中,只要调用“example()
”,您的new
属性就会被解除分配(new
对于一个属性来说都是一个糟糕的名称,即使只是对于演示:-)
因此,在这里可以起作用的是:
Attempted to read an unowned reference but object 0x60c000005f20 was already deallocated
:
但是,与弱引用不同的是,在
另一个实例具有相同的生存期或更长的生存期
在上面的示例中,只要调用“example()
”,您的new
属性就会被解除分配(new
对于一个属性来说都是一个糟糕的名称,即使只是对于演示:-)
因此,在这里可以起作用的是:
Attempted to read an unowned reference but object 0x60c000005f20 was already deallocated
发件人:
与弱引用一样,无主引用不会对其引用的实例保持强控制
创建示例的新实例
,并首先将其分配给无主常量。没有任何内容包含对您的示例实例的强引用,因此它会立即被释放。您的无主常量first
现在保存着对该解除分配对象的引用,因此您会得到一个错误,即您试图读取一个解除分配对象
unowned
关键字用于创建对对象的弱引用,您可以保证引用对象的生存期与引用对象相同。这使您能够防止引用循环,同时避免需要展开可选的循环(如弱
)。来自:
与弱引用一样,无主引用不会对其引用的实例保持强控制
创建示例的新实例
,并首先将其分配给无主常量。没有任何内容包含对您的示例实例的强引用,因此它会立即被释放。您的无主常量first
现在保存着对该解除分配对象的引用,因此您会得到一个错误,即您试图读取一个解除分配对象
unowned
关键字用于创建对对象的弱引用,您可以保证引用对象的生存期与引用对象相同。这使您能够防止引用循环,同时避免需要展开可选循环(如弱
)