ตัวเริ่มต้นและ deinit (คลาส)
สร้างตัวเริ่มต้นแบบกำหนดและแบบอำนวยความสะดวก กำหนดค่าเริ่มต้น ใช้ failable init เมื่อจำเป็น และทำความเข้าใจตัวทำลายคลาส
ตัวเริ่มต้นและ deinit (คลาส) เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน
ภาพรวม
บทเรียนนี้ครอบคลุมตัวเริ่มต้นแบบหลักเทียบกับแบบอำนวยความสะดวก ค่าปริยาย init? ที่อาจล้มเหลว และ deinit ของคลาส
พื้นฐานการเริ่มต้นโครงสร้าง
โครงสร้างจะมีตัวเริ่มต้นแบบสมาชิกให้โดยอัตโนมัติ การกำหนดค่าปริยายช่วยให้การเรียกใช้ง่ายขึ้น
struct User {
var name: String = "Guest" // default value
var age: Int
// memberwise init is synthesized: User(name:age:)
}
let u1 = User(name: "Ada", age: 20)
let u2 = User(age: 0) // uses default name
print(u1.name, u2.name)ตัวเริ่มต้นหลัก
ตัวเริ่มต้นหลักรับรองว่าพร็อพเพอร์ตีแบบเก็บค่าทั้งหมดถูกกำหนดค่าก่อนนำไปใช้งาน
class Person {
let name: String
let id: Int
// Designated initializer: fully initializes stored properties
init(name: String, id: Int) {
self.name = name
self.id = id
}
}
let p = Person(name: "Bob", id: 1)
print(p.name, p.id)ตัวเริ่มต้นแบบอำนวยความสะดวก
ตัวเริ่มต้นแบบอำนวยความสะดวกต้องส่งต่อการทำงานไปยังตัวเริ่มต้นแบบหลักในคลาสเดียวกัน
class Rectangle {
var width: Double
var height: Double
// Designated
init(width: Double, height: Double) {
self.width = width
self.height = height
}
// Convenience must call a designated initializer
convenience init(square side: Double) {
self.init(width: side, height: side)
}
}
print(Rectangle(square: 3).width)ตัวเริ่มต้นที่อาจล้มเหลว
ใช้ init? กับข้อมูลนำเข้าที่อาจไม่ผ่านการตรวจสอบความถูกต้อง ผลลัพธ์จะเป็นค่าเลือกได้
struct Email {
let value: String
init?(_ raw: String) {
guard raw.contains("@") else { return nil } // fail to initialize
self.value = raw
}
}
print(Email("a@b.com")?.value ?? "invalid")
print(Email("not email")?.value ?? "invalid")ตัวทำลาย
มีเพียงคลาสเท่านั้นที่มี deinit ซึ่งจะถูกเรียกเมื่ออินสแตนซ์ถูกคืนพื้นที่ (ARC)
class TempResource {
let id: Int
init(id: Int) { self.id = id }
deinit { print("Releasing resource", id) }
}
do {
let r = TempResource(id: 42)
print("Using", r.id)
} // r goes out of scope; ARC may call deinit hereตัวเริ่มต้นหลักเทียบกับแบบอำนวยความสะดวก
ตรวจสอบอย่างรวดเร็ว: ตัวเริ่มต้นแบบอำนวยความสะดวกต้องเรียกตัวเริ่มต้นใดในท้ายที่สุด
สรุปทบทวน
สรุปทบทวน: ใช้ตัวเริ่มต้นแบบหลักเพื่อกำหนดค่าพร็อพเพอร์ตีทั้งหมด เพิ่มตัวเริ่มต้นแบบอำนวยความสะดวกเพื่อให้จุดเรียกใช้งานสะดวกขึ้น พิจารณาใช้ init? สำหรับการตรวจสอบความถูกต้อง และให้คลาสทำความสะอาดทรัพยากรใน deinit
คำถามที่พบบ่อย
บทเรียน “ตัวเริ่มต้นและ deinit (คลาส)” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวเริ่มต้นและ deinit (คลาส)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวเริ่มต้นและ deinit (คลาส)”
สร้างตัวเริ่มต้นแบบกำหนดและแบบอำนวยความสะดวก กำหนดค่าเริ่มต้น ใช้ failable init เมื่อจำเป็น และทำความเข้าใจตัวทำลายคลาส คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน
บทเรียน “ตัวเริ่มต้นและ deinit (คลาส)” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โครงสร้างกับคลาส พร็อพเพอร์ตี และตัวเริ่มต้น
- พร็อพเพอร์ตีที่จัดเก็บกับคำนวณและตัวสังเกต
- ตัวเริ่มต้นและ deinit (คลาส)