2010-08-15 25 views
10

Tôi mới tham gia Objective-C. Mã mẫu do Xcode tạo có: #import <Foundation/Foundation.h>. Khi tôi kiểm tra tại /System/Library/Frameworks/Foundation.framework/Headers, có gần 2 nghìn tệp tiêu đề!Tại sao nhập chương trình đơn giản <Foundation/Foundation.h> thay vì tệp tiêu đề riêng lẻ?

Câu hỏi của tôi là, đối với một mã thực sự đơn giản chỉ sử dụng NSString, tại sao không nhập tệp NSString.h?

Việc nhập toàn bộ nhóm khung nền tảng có ảnh hưởng đến hiệu suất của tệp thi hành không? Nếu không, nó có một số lợi ích?

Trả lời

15

Nó không ảnh hưởng đến hiệu suất như các khuôn khổ sẵn có là tất cả đã được cài đặt trên thiết bị của bạn đã sẵn sàng để được liên kết bởi tệp thực thi của bạn.

Điều bạn đang nói khi bạn #import <Foundation/Foundation.h> là "Tôi muốn truy cập vào chức năng của khuôn khổ Nền tảng ngay cả khi tôi không sử dụng tất cả". Một bộ phận ngữ nghĩa của nó.

Trình biên dịch sẽ thực hiện tất cả các tối ưu hóa cần thực hiện đối với việc loại bỏ các ký hiệu không sử dụng.

Sự cố chỉ thực hiện nhập trên NSString.h là bạn có biết phụ thuộc nào cho NSString không. Tôi không biết, và cũng không cần.

+1

Bạn sẽ không mong đợi rằng NSString.h sẽ nhập phụ thuộc của riêng mình? – TenMinJoe

+0

@TenMinJoe True. Nó không phải là câu được viết hay nhất trên thế giới, nhưng nó sắp xếp được điểm qua các khung nhập khẩu đó là nguyên tử. Lộn xộn với điều đó nguy hiểm của riêng bạn. –

Các vấn đề liên quan