Mục tiêu C, giống như C, không có không gian tên. Điều này có nghĩa là nếu ai đó đã định nghĩa một hàm foo
hoặc một lớp Bar
, thì nó phải là duy nhất trên toàn cầu và bạn không thể định nghĩa nó. Điều này có thể dẫn đến rất nhiều vấn đề đau đầu khi bạn có mã của mình và sau đó thêm một thư viện khác và đột nhiên mọi thứ bị phá vỡ ở những nơi xa lạ.
Có là một hướng dẫn được trình bày bởi Apple cho điều này trong lập trình với Objective C: ước phần của thư viện nhà phát triển iOS:
Một số tên phải là duy nhất trên ứng dụng của bạn
Mỗi lần bạn tạo một loại, ký hiệu hoặc mã định danh mới, trước tiên bạn nên xem xét phạm vi mà tên phải là duy nhất. Đôi khi phạm vi này có thể là toàn bộ ứng dụng, bao gồm các khung được liên kết của nó; đôi khi phạm vi được giới hạn chỉ trong một lớp kèm theo hoặc thậm chí chỉ là một khối mã.
Tên lớp phải là duy nhất trên toàn bộ ứng dụng
Các lớp Objective-C phải được đặt tên duy nhất không chỉ trong mã mà bạn đang viết trong một dự án, mà còn trên bất kỳ khung hoặc gói nào bạn có thể đưa vào. Ví dụ, bạn nên tránh sử dụng các tên lớp chung như ViewContoder hoặc TextParser vì có thể một khung công tác bạn đưa vào ứng dụng của bạn có thể không tuân theo các quy ước và tạo các lớp có cùng tên.
Để giữ cho tên lớp duy nhất, quy ước là sử dụng tiền tố trên tất cả các lớp. Bạn sẽ nhận thấy rằng các tên lớp Cacao và Cacao Touch thường bắt đầu bằng NS hoặc UI. Các tiền tố hai chữ cái như thế này được Apple dành riêng để sử dụng trong các lớp khung. Khi bạn tìm hiểu thêm về Ca cao và Ca cao cảm ứng, bạn sẽ gặp nhiều loại tiền tố khác liên quan đến các khung cụ thể:
...
Các lớp học của riêng bạn nên sử dụng ba tiền tố chữ cái. Chúng có thể liên quan đến sự kết hợp giữa tên công ty và tên ứng dụng của bạn hoặc thậm chí một thành phần cụ thể trong ứng dụng của bạn. Ví dụ, nếu công ty của bạn được gọi là Whispering Oak và bạn đang phát triển một trò chơi có tên Zebra Sur ngạc nhiên, bạn có thể chọn WZS hoặc WOZ làm tiền tố lớp.
Vì vậy, các thư viện mà bạn đề cập đến loại phá vỡ quy ước này, nhưng giải quyết vấn đề thiếu không gian tên trong Mục tiêu C.
Đọc thêm
Không gian tên của NSHipster
Cách tốt nhất để giải quyết xung đột không gian tên Objective-C là gì?
Làm thế nào để một người sử dụng không gian tên trong mã mục tiêu iOS-c?
;-)