ไม่มีmain()
วิธีการใดที่รวดเร็ว โปรแกรมต้องเริ่มการทำงานจากที่ใดที่หนึ่ง แล้วจุดเริ่มต้นของการเรียกใช้โค้ดที่รวดเร็วคืออะไรและจะตัดสินใจอย่างไร?
ไม่มีmain()
วิธีการใดที่รวดเร็ว โปรแกรมต้องเริ่มการทำงานจากที่ใดที่หนึ่ง แล้วจุดเริ่มต้นของการเรียกใช้โค้ดที่รวดเร็วคืออะไรและจะตัดสินใจอย่างไร?
คำตอบ:
จุดเริ่มต้นในโมดูล Swift main.swift
ธรรมดาไฟล์ในโมดูลที่เรียกว่า main.swift
เป็นไฟล์เดียวที่ได้รับอนุญาตให้มีนิพจน์และคำสั่งที่ระดับบนสุด (ไฟล์ Swift อื่น ๆ ทั้งหมดในโมดูลสามารถมีการประกาศเท่านั้น)
Cocoa Touch ใช้@UIApplicationMain
แอตทริบิวต์ในการนำไปใช้UIApplicationDelegate
แทนmain.swift
ไฟล์เพื่อทำเครื่องหมายจุดเริ่มต้น โกโก้เคยใช้main.swift
ไฟล์ขนาดเล็กที่เรียกง่ายๆNSApplicationMain
แต่ใน Xcode 6.1ใช้@NSApplicationMain
แอตทริบิวต์ในการใช้งานNSApplicationDelegate
ไฟล์.
main.swift
อยู่ในกลุ่มไฟล์ที่รองรับและกำหนดค่าให้โทรNSApplicationMain
ได้
main.swift
ได้
ในไฟล์ที่คุณสามารถดู
AppDelegate.swift
AppDelegate เป็นไฟล์รายการเริ่มต้น@UIApplicationMain
โดยทั่วไป: main.m
และAppDelegate.m
ถูกรวมเข้าSwift
กับเพียงAppDelegate.swift
คุณอาจต้องการอ่านไฟล์และการเริ่มต้น
ข้อยกเว้นคือไฟล์พิเศษชื่อ“ main.swift” ซึ่งทำงานคล้ายกับไฟล์สนามเด็กเล่น แต่สร้างขึ้นด้วยซอร์สโค้ดของแอปของคุณ ไฟล์“ main.swift” สามารถมีรหัสระดับบนสุดและกฎที่ขึ้นกับคำสั่งซื้อก็มีผลเช่นกัน มีผลบังคับใช้บรรทัดแรกของโค้ดที่จะทำงานใน“ main.swift” ถูกกำหนดโดยปริยายให้เป็นจุดเข้าใช้งานหลักของโปรแกรม ซึ่งจะทำให้โปรแกรม Swift ขั้นต่ำเป็นบรรทัดเดียวได้ตราบใดที่บรรทัดนั้นอยู่ใน“ main.swift”
ใน Xcode เทมเพลต Mac เริ่มต้นที่จะรวมไฟล์“ main.swift” แต่สำหรับแอป iOS ค่าเริ่มต้นสำหรับเทมเพลตโครงการ iOS ใหม่คือการเพิ่ม @UIApplicationMain ลงในไฟล์ Swift ปกติ ซึ่งทำให้คอมไพเลอร์สังเคราะห์จุดเริ่มต้นหลักสำหรับแอป iOS ของคุณและไม่จำเป็นต้องใช้ไฟล์“ main.swift”
หรือคุณสามารถเชื่อมโยงในการใช้งานหลักที่เขียนใน Objective-C โดยทั่วไปเมื่อย้ายโครงการจาก Objective-C ไปยัง Swift เพิ่มขึ้น
ในแอพ Swift มีคุณสมบัติ:
@UIApplicationMain
(โกโก้ทัช)@NSApplicationMain
(โกโก้)ที่บอกคอมไพเลอร์ที่รวดเร็วว่าจุดเริ่มต้นของแอปพลิเคชันอยู่ที่ไหน
สิ่งที่คอมไพเลอร์ที่รวดเร็วทำภายใต้ประทุนคือมันสร้างไฟล์ main
ฟังก์ชันซึ่งโดยพื้นฐานแล้วจะมีลักษณะเหมือนกับในแอป Objective-C และถือว่าวิธีนี้เป็นจุดเริ่มต้นของแอป (วิธีแรกที่เรียกเมื่อกระบวนการแอปพลิเคชันเริ่มต้นขึ้น)
หากคุณต้องการอ่านเพิ่มเติมเกี่ยวกับสิ่งที่คอมไพเลอร์ที่รวดเร็วทำกับMain
แอตทริบิวต์ระบบปฏิบัติการรู้ได้อย่างไรว่าจุดเริ่มต้นของแอปพลิเคชันอยู่ที่ไหนฉันขอแนะนำให้คุณอ่านบทความนี้: ทำความเข้าใจเกี่ยวกับจุดเริ่มต้นของแอป iOS
ในสวิฟท์ 5.3 มีใหม่แอตทริบิวต์ซึ่งจะช่วยให้คุณสามารถควบคุมที่จุดเริ่มต้นของคุณอยู่ในโครงการของคุณมากกว่าแค่@main
main.swift
มีรายการหลักได้เพียงรายการเดียวและคุณไม่มีmain.swift
ไฟล์และแอตทริบิวต์@main
ไม่ได้ ดูhttps://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.mdสำหรับรายละเอียดเพิ่มเติม
@main
struct App {
static func main() {
print("Starting.")
}
}
main.swift
ไฟล์ไม่เจอ ตำแหน่งของไฟล์นี้คืออะไร?