Tôi có nên đặt tên lớp Swift là một tiền tố ba chữ cái theo đề nghị của Objective-C Conventions: Class Names Must Be Unique Across an Entire App?Swift: Tiền tố lớp cần thiết?
Trả lời
Không, you do not need class prefixes in Swift, bởi vì lớp học được đặt tên theo mô-đun mà chúng sinh sống.
Nếu bạn cần để disambiguate giữa (ví dụ) một Array
từ Swift và một Array
lớp/struct mà bạn đã khai báo trong ứng dụng của bạn, bạn có thể làm như vậy bằng cách gõ nó như là một Swift.Array
hoặc một MyProject.Array
. Điều đó cũng hoạt động với các tiện ích mở rộng:
extension Swift.Array {
...
}
extension MyProject.Array {
...
}
Điều này có thực hiện nếu bạn nhập vào mục tiêu c? – Jeef
@Jeef [Câu trả lời Stackoverflow] (http://stackoverflow.com/a/26148391/2067021) dường như chỉ ra rằng có thể đặt tên các xung đột khi các lớp được nhập vào Objective-C. – user2067021
Vì bạn chọn tên lớp khi xuất bằng thẻ '@ objc', tôi nghĩ bạn nên làm cả hai, vì vậy trong Swift' SimpleAlert' sẽ trở thành 'DRSimpleAlert' –
Không, tiền tố chắc chắn không được neeeded.
Giả sử ứng dụng của bạn có tên MyApp
và bạn cần khai báo tùy chỉnh UICollectionViewController
.
Bạn không cần tiền tố và lớp con như thế này:
class MAUICollectionViewController: UICollectionViewController {}
Làm điều đó như thế này:
class UICollectionViewController {} //no error "invalid redeclaration o..."
Tại sao?. Vì những gì bạn khai báo được khai báo trong mô-đun hiện tại, là mục tiêu hiện tại của bạn hiện tại. Và UICollectionViewController
từ UIKit
được khai báo trong mô-đun UIKit
.
Cách sử dụng nó trong mô-đun hiện tại?
var customController = UICollectionViewController() //your custom class
var uikitController = UIKit.UICollectionViewController() //class from UIKit
Cách phân biệt chúng với mô-đun khác?
var customController = MyApp.UICollectionViewController() //your custom class
var uikitController = UIKit.UICollectionViewController() //class from UIKit
- 1. Tiền tố khtml có cần thiết không?
- 2. Tên JNDI - Tiền tố "jdbc /" có cần thiết không?
- 3. Cần tiền tố hàm có dấu (void)
- 4. Chức năng mở rộng tiền tố
- 5. Tạo các lớp JAXB tiền tố
- 6. Tiền tố Lớp-C Mục tiêu
- 7. Định nghĩa lớp tham chiếu từ tiêu đề tiền tố trong swift
- 8. $ (tiền tố) trên $ (tiền tố)/etc/gitconfig là gì?
- 9. Khởi chạy Ruby mà không cần tiền tố "Ruby"
- 10. Serialize tiền tố cây
- 11. jQuery - Nhận lớp phần tử dựa trên tiền tố
- 12. Cách thay đổi Tiền tố Lớp trong Xcode 4?
- 13. AutoMapper với tiền tố
- 14. Lỗi trình biên dịch "Sử dụng tiền tố mơ hồ" với Swift 3
- 15. @synchronized (self) có tạo một khối nơi tiền tố tự không cần thiết trên các thuộc tính không?
- 16. Naming ước JUnit hậu tố hoặc tiền tố thử nghiệm
- 17. sai chính tiền tố MySQL
- 18. $ vị trí băm tiền tố
- 19. Đường dẫn tiền tố \ ?? \ và \\ \
- 20. Mẫu thiết kế "Mặt tiền"
- 21. Tiền tố NS có nghĩa là gì?
- 22. Cách kiểm tra xem Chuỗi bắt đầu bằng gì (tiền tố) hoặc kết thúc bằng (hậu tố) trong Swift
- 23. SQL làm thế nào để kiểm tra tiền tố trong tế bào với hai tiền tố
- 24. Nhận tiền tố tham số trong ADO.NET
- 25. Tại sao một số chức năng Boost không cần tiền tố với namespace
- 26. Tiền tố DS chữ ký xml?
- 27. Gỡ cài đặt các yếu tố cần thiết trên web
- 28. Nhiều khóa tmux tiền tố chính?
- 29. Nginx tiền tố URL không hợp lệ
- 30. SQL: xoá các bảng có tiền tố
Bây giờ Apple thậm chí đã loại bỏ tiền tố 'NS' cho các lớp như' NSNotificationCenter' khi được sử dụng trong Swift. Tuy nhiên, họ vẫn giữ tiền tố cho 'NSObject', đó là lý do tại sao tất cả chúng ta đều có nhiều niềm vui ở đây. –