Câu trả lời:
Điểm vào trong một mô-đun Swift thuần túy là tệp trong mô-đun được gọi main.swift
. main.swift
là tệp duy nhất được phép có các biểu thức và câu lệnh ở cấp cao nhất (tất cả các tệp Swift khác trong mô-đun chỉ có thể chứa các khai báo).
Cocoa Touch sử dụng @UIApplicationMain
thuộc tính trên một triển khai UIApplicationDelegate
thay vì một main.swift
tệp để đánh dấu điểm nhập. Cocoa đã từng sử dụng một main.swift
tệp tối thiểu được gọi đơn giản NSApplicationMain
, nhưng kể từ Xcode 6.1 sử dụng @NSApplicationMain
thuộc tính khi triển khai NSApplicationDelegate
.
main.swift
nằm trong nhóm Tệp hỗ trợ và được cấu hình đơn giản để gọi NSApplicationMain
.
main.swift
.
Trong AppDelegate.swift
tệp bạn có thể thấy @UIApplicationMain
.
AppDelegate là tệp mục nhập ban đầu.
Về cơ bản: main.m
và AppDelegate.m
được hợp nhất Swift
thànhAppDelegate.swift
Bạn có thể muốn đọc Tệp và Khởi tạo
Ngoại lệ là một tệp đặc biệt có tên “main.swift”, hoạt động giống như tệp sân chơi nhưng được tạo bằng mã nguồn ứng dụng của bạn. Tệp “main.swift” có thể chứa mã cấp cao nhất và các quy tắc phụ thuộc vào thứ tự cũng được áp dụng. Trên thực tế, dòng mã đầu tiên chạy trong “main.swift” được định nghĩa ngầm định là điểm vào chính của chương trình. Điều này cho phép chương trình Swift tối thiểu là một dòng duy nhất - miễn là dòng đó nằm trong “main.swift”.
Trong Xcode, các mẫu Mac mặc định bao gồm một tệp “main.swift”, nhưng đối với các ứng dụng iOS, mặc định cho các mẫu dự án iOS mới là thêm @UIApplicationMain vào một tệp Swift thông thường. Điều này khiến trình biên dịch tổng hợp điểm nhập chính cho ứng dụng iOS của bạn và loại bỏ nhu cầu về tệp “main.swift”.
Ngoài ra, bạn có thể liên kết trong một triển khai chính được viết bằng Objective-C, phổ biến khi chuyển dần các dự án từ Objective-C sang Swift.
Trong ứng dụng Swift có các thuộc tính:
@UIApplicationMain
(Cocoa Touch)@NSApplicationMain
(Ca cao)cho trình biên dịch nhanh biết đâu là điểm vào của ứng dụng.
Những gì trình biên dịch nhanh thực hiện là nó tạo ra một main
hàm, về cơ bản trông giống như trong các ứng dụng Objective-C và coi phương thức này như là điểm vào của ứng dụng (một phương thức đầu tiên được gọi khi quá trình ứng dụng được bắt đầu).
Nếu bạn muốn đọc thêm về trình biên dịch nhanh làm gì với Main
các thuộc tính, cách hệ điều hành biết đâu là điểm nhập của ứng dụng, tôi khuyến khích bạn đọc bài viết này: Tìm hiểu về điểm nhập ứng dụng iOS
Trong Swift 5.3 có một @main
thuộc tính mới cho phép bạn kiểm soát vị trí điểm vào trong dự án của bạn thay vì chỉ main.swift
. Chỉ có thể có một mục nhập chính và bạn không thể có main.swift
tệp và thuộc tính @main
. Xem https://github.com/apple/swift-evolution/blob/master/proposal/0281-main-attribute.md để biết thêm chi tiết.
@main
struct App {
static func main() {
print("Starting.")
}
}
main.swift
tệp ở bất kỳ đâu. Vị trí của tệp này là gì?