Mobile Development Swift Subjective
Oct 04, 2025

How does Swift's ownership system work?

Detailed Explanation
Swift's ownership system manages memory automatically while preventing common memory errors.\n\n• **Reference Counting:**\n\nclass Resource { \n let name: String\n init(name: String) {\n self.name = name\n print("\(name) created")\n }\n deinit {\n print("\(name) destroyed")\n }\n}\n\nvar resource1: Resource? = Resource(name: "Resource1") // RC = 1\nvar resource2 = resource1 // RC = 2\nresource1 = nil // RC = 1\nresource2 = nil // RC = 0, deinit called\n\n\n• **Weak References:**\n\nclass Parent { \n var children: [Child] = []\n deinit { print("Parent deallocated") }\n}\n\nclass Child { \n var parent: Parent? // Prevents retain cycle\n init(parent: Parent) {\n self.parent = parent\n parent.children.append(self)\n }\n deinit { print("Child deallocated") }\n}\n\n\n• **Unowned References:**\n\nclass Customer { \n let name: String\n var card: CreditCard?\n init(name: String) { self.name = name }\n deinit { print("\(name) is being deinitialized") }\n}\n\nclass CreditCard { \n let number: UInt64\n let customer: Customer // Always has a customer\n init(number: UInt64, customer: Customer) {\n self.number = number\n self.customer = customer\n }\n deinit { print("Card #\(number) is being deinitialized") }\n}\n\n\n• **Closure Capture Lists:**\n\nclass HTMLElement { \n let name: String\n let text: String?\n \n var asHTML: () -> String = { [unowned self] in\n let text = self.text {\n return "<\(self.name)>\(text)"\n } else {\n return "<\(self.name) />"\n }\n }\n \n init(name: String, text: String? = nil) {\n self.name = name\n self.text = text\n }\n \n deinit {\n print("\(name) is being deinitialized")\n }\n}\n\n\n• **Value Type Ownership:**\n\n// Value types have automatic ownership\nstruct Data { \n var content: [Int]\n}\n\nvar data1 = Data(content: [1, 2, 3])\nvar data2 = data1 // Copy created\ndata2.content.append(4) // Only affects data2\n
Discussion (0)

No comments yet. Be the first to share your thoughts!

Share Your Thoughts
Feedback