如何在 Swift 中删除类的实例?寻找某种相当于
del instance
Run Code Online (Sandbox Code Playgroud)
在Python中。我对 Swift 还很陌生,在文档或之前的帖子中找不到任何内容。
我在游戏中有一个子弹类,在与玩家碰撞后需要将其删除。示例代码可以是这样的
class Bullet() {
init() {
for traveled in 0...range {
//travel forward
if collided {
//damage collided player
del self
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:这就是为我清理的内容http://www.apeth.com/iOSBook/ch12.html#_memory_management
正如另一个问题中提到的,Swift 使用自动引用计数。
\n\n苹果是这样解释的:
\n\n\n\n\nARC 跟踪当前有多少属性、常量和变量引用每个类实例。只要至少一个对该实例的活动引用仍然存在,ARC 就不会释放该实例。
\n
Here\xe2\x80\x99 是自动引用计数如何工作的示例。此示例从一个名为 的简单类开始Person,它定义了一个名为 的存储常量属性name:
class Person {\n let name: String\n\n init(name: String) {\n self.name = name\n print("\\(name) is being initialized")\n }\n\n deinit {\n print("\\(name) is being deinitialized")\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n该类Person有一个初始化程序,用于设置instance\xe2\x80\x99sname属性并打印一条消息以指示初始化正在进行中。该类Person还有一个析构器,当该类的实例被释放时,它会打印一条消息。
下一个代码片段定义了三个类型的变量,它们用于在后续代码片段中Person?设置对新实例的多个引用。Person由于这些变量是可选类型(Person?, not Person),因此它们会自动使用值 进行初始化nil,并且当前不引用Person实例。
var reference1: Person?\nvar reference2: Person?\nvar reference3: Person?\nRun Code Online (Sandbox Code Playgroud)\n\n您现在可以创建一个新Person实例并将其分配给以下三个变量之一:
reference1 = Person(name: "John Appleseed")\n// Prints "John Appleseed is being initialized"\nRun Code Online (Sandbox Code Playgroud)\n\n请注意,该消息"John Appleseed is being initialized"是在您调用Personclass\xe2\x80\x99s 初始值设定项时打印的。这确认初始化已经发生。
由于新Person实例已分配给reference1变量,因此现在存在reference1对新Person实例的强引用。由于至少有一个强引用,ARC 确保将其Person保存在内存中并且不会被释放。
如果将同一个Person实例分配给另外两个变量,则会建立对该实例的另外两个强引用:
reference2 = reference1\nreference3 = reference1\nRun Code Online (Sandbox Code Playgroud)\n\n现在这个单一实例有三个强引用Person。
如果通过分配给其中两个变量来破坏其中两个强引用(包括原始引用)nil,则保留一个强引用,并且Person不会释放该实例:
reference1 = nil\nreference2 = nil\nRun Code Online (Sandbox Code Playgroud)\n\nARC 不会释放该Person实例,直到第三个也是最后一个强引用被破坏,此时它\xe2\x80\x99 清楚地表明您不再使用该Person实例:
reference3 = nil\n// Prints "John Appleseed is being deinitialized"\nRun Code Online (Sandbox Code Playgroud)\n\n所有代码和编写均ARC in Action来自Apple 的文档。
| 归档时间: |
|
| 查看次数: |
9146 次 |
| 最近记录: |