2012-07-11 19 views
18

Tôi đã lập trình trong Objective-C Cocoa trong một thời gian ngắn bằng cách sử dụng NSObjects ... Tôi thấy rằng có một khung công tác khác: CoreFoundation.Khi tôi xem xét nó, nó có vẻ là một khung C-Style.Mục đích của khuôn khổ CoreFoundation là gì?

Vì vậy, tôi có một số sự tò mò tôi muốn được làm rõ. Tôi đã googled nhưng không tìm thấy câu trả lời trực tiếp.

  1. Mục đích của khung CoreFoundation là gì?
  2. Khung Cocoa không cung cấp mọi thứ cần thiết chưa?
  3. Khung CoreFoundation có cung cấp bất kỳ lợi thế nào mà CocoaFramework không cung cấp không?

Đây là một số câu hỏi tôi có. Nếu bất cứ ai có thể cung cấp câu trả lời hoặc cung cấp cho tôi các tài nguyên để đọc về nó, điều đó thật tuyệt vời. Tôi tự hỏi liệu giá trị của nó có học được nhiều hơn về khuôn khổ không.

Trả lời

17

Lịch sử: Quỹ có niên đại ~ 1993/1994 và các API trong đó là một phần của API OpenStep được xuất bản bởi NeXT.

Mục đích của khung CoreFoundation là gì?

CF được tạo trong quá trình chuyển đổi Mac OS sang Mac OS X để giúp hỗ trợ quá trình chuyển đổi đó. Ban đầu, nó đã được thực hiện cả về tốc độ và cho phép các chương trình hoàn toàn không phải mục tiêu-C được viết. Theo thời gian, điều đó đã được chứng minh là không có vấn đề và CF có nhiều bit hơn và nhiều hơn nữa được thực hiện trong Objective-C (có một cái nhìn tại nhị phân CoreFoundation bằng cách sử dụng một cái gì đó như otool).

CFLite là một biến thể trọng lượng nhẹ, di động, tinh khiết-C (IIRC).

Khung Cocoa không cung cấp mọi thứ cần thiết chưa?

Nhiều hơn hoặc ít hơn. Và, chắc chắn moreso để xây dựng các ứng dụng GUI trên iOS hoặc OS X.

Khung CoreFoundation có cung cấp bất kỳ lợi thế nào mà CocoaFramework không cung cấp?

Một số, nhưng nói chung là giảm chi phí đơn giản và tăng tính mong manh.

Ví dụ: bộ sưu tập CF cho phép bạn tùy chỉnh hoàn toàn cách bộ nhớ được quản lý và các đối tượng được xác định; bạn có thể cung cấp các phân bổ tùy chỉnh/miễn phí/băm/so sánh móc. Thông qua điều này, bạn có thể "dễ dàng" gói gọn các loại không phải Mục tiêu-C trong các bộ sưu tập CF.

+0

Vì vậy, có vẻ như mặc dù Core Foundation cung cấp một API có thể được gọi bằng mã C thuần túy, bất kỳ tệp thực thi nào bạn tạo ra bằng cách sử dụng Core Foundation bao gồm mã C của bạn PLUS thư viện runtime Objective-C (libobjc.dylib) và hoạt động (khởi động , vv) như là một kiểu Objective-C thực thi với các tham chiếu được liên kết động. – Colin

2

Khuôn khổ nền tảng cơ sở cung cấp chức năng tương tự như khung nền tảng nhưng trong C thay vì Obj-C để nó có thể được sử dụng với khung công tác C.

Nếu bạn nhìn xung quanh, bạn sẽ thấy rằng Apple có một vài khung C như Core Graphics, Core Audio, Sổ địa chỉ vv

+1

Thực ra, CF có khối lượng lớn được triển khai trong Mục tiêu-C và một số API là trình bao bọc xung quanh đối tượng Mục tiêu-C của chúng, chứ không phải theo cách khác xung quanh .... – bbum

16

CoreFoundation là nhiều hơn chỉ là một sự thay thế C dựa trên Foundation. Theo cách đơn giản hóa quá mức, nền tảng cơ bản là CoreFoundation, vì một được xây dựng trên đầu trang khác. Nhiều lớp trong Foundation chỉ là các trình bao bọc Objective C gọn nhẹ xung quanh đối tác CoreFoundation của chúng, đó là cách mà cầu nối miễn phí hoạt động (ví dụ: CFString và NSString).

Để biết thêm lịch sử và giải thích kỹ thuật hơn, hãy xem this article.

Nếu bạn thực sự muốn đọc nguồn CoreFoundation, một số phiên bản khung công tác "CFLite" của Apple có sẵn để tham chiếu here.

+0

+1 cho liên kết tuyệt vời. nhưng, tôi không thể chọn hai câu trả lời. BBum trả lời 3 mối quan tâm. –

+1

@ user76859403 Không sao cả, và truy cập câu trả lời của bbum. Nó là tốt nhất. –

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