2009-08-23 13 views
5

Tôi có một thư viện được viết bằng C mà tôi muốn sử dụng trong một ứng dụng Objective-C, trên máy Mac hoặc iPhone.Lời khuyên khi gói một thư viện C vào mục tiêu-C

Thật không may, vì thư viện này được viết bởi các cá nhân trong không gian nguồn mở, tài liệu này khá thưa thớt và không đầy đủ. Trong khi tôi có thể tìm ra cách sử dụng những thứ trong thư viện, tôi không thực sự có một cái nhìn tổng quan về toàn bộ cơ sở mã.

Điều tôi muốn làm là đưa thư viện vào một số lớp dễ dàng sử dụng và có thể chuyển đổi được trong Mục tiêu-C.

  • Có ai có mẹo nào về cách tiếp cận điều này không?
  • Bất kỳ lời khuyên nào về cách tốt nhất để có được một hệ thống phân cấp trực quan về cách thư viện được cấu trúc như thế nào?
  • Làm cách nào để tôi quyết định cách cấu trúc tốt nhất trình bao bọc để có thể sử dụng lại và dễ sử dụng?

Bất kỳ và tất cả trợ giúp sẽ được đánh giá cao, cảm ơn!

Trả lời

7

Tôi đã tự làm điều này một vài lần. Điều này có thể thú vị - đó là cơ hội của bạn để sửa chữa (hoặc ít nhất là ẩn) mã xấu! Bạn có thể sử dụng Doxygen để có được một hệ thống phân cấp trực quan của mã (mặc dù tôi chỉ sử dụng nó cho các thư viện C++, nó cũng làm việc với C), hoặc bất kỳ công cụ miễn phí nào khác ngoài đó.

Không cấu trúc lớp trình bao bọc của bạn như thư viện cơ bản nếu thư viện không được thiết kế hoặc ghi lại tốt. Đây là cơ hội để bạn xem xét quan điểm của người dùng và cách họ sẽ sử dụng mã. Viết các trường hợp thử nghiệm của bạn trước tiên để tìm ra điều đó, và/hoặc nói chuyện với một số người đã sử dụng thư viện rồi.

Hai mẫu thiết kế đẹp phù hợp với những gì bạn đang làm là AdapterFacade.

+2

+1. Bạn nên định nghĩa một số giao diện đẹp mà làm những gì bạn muốn trước, sau đó điền vào các triển khai bằng cách sử dụng thư viện C –

+0

Khi bạn nói giao diện, bạn có nghĩa là giao diện người dùng, hoặc giao diện mã? – Jasarien

+0

Tôi nghĩ anh ấy có nghĩa là giao diện mã. –

2

Trước tiên, hãy nhớ: thư viện C thư viện Mục tiêu-C. Bạn không thực sự cần phải làm bất kỳ gói nào cả, mặc dù bạn có thể muốn nếu giao diện thư viện đặc biệt cồng kềnh.

Thứ hai, nếu bạn quyết định rằng bạn muốn viết một trình bao bọc thư viện, hãy giữ nó đơn giản. Xác định các chức năng cốt lõi của thư viện mà bạn thực sự có kế hoạch sử dụng và suy nghĩ về cách tốt nhất để cung cấp giao diện cho các chức năng đó và các chức năng đó, với mục đích sử dụng dự định của bạn. Thiết kế giao diện mà bạn muốn làm việc với, sau đó triển khai nó trên thư viện.

0

Vì ARC (tính năng tham khảo tự động) được thêm vào các trình biên dịch và thư viện của Apple, Objective-C và C không còn tự do thay thế được nữa. (Here's một danh sách tài liệu và hướng dẫn ARC). Bạn cần xem xét các vấn đề cấp phát bộ nhớ kỹ hơn, và bạn có thể chỉ muốn "nối" các thư viện. Xem this SO question và một số liên kết từ đó, về cách cầu nối của Apple giữa các thư viện Obj-C và C.

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