2013-07-09 37 views
6

Tôi đang tìm kiếm kiến ​​thức ngay hôm nay..h và .m tệp trong Mục tiêu-c

tôi đang làm việc trên một số mã để làm việc, và sau khi xem xét tôi đã có một bộ não hoàn chỉnh Fart và không thể nhớ tại sao chúng ta làm điều gì đó với .h và các tập tin .m trong Objective-C

  1. Tôi đã tự hỏi tại sao chúng ta nhập tệp và khai báo tên phương thức trong tệp .h? (Tôi biết nó phải làm với chế biến, nhưng không thể nhớ chi tiết)
  2. Tại sao đôi khi chúng tôi nhập tệp trực tiếp vào tệp .m và không phải trong tệp .h trong một số trường hợp.
  3. Khi bạn khai báo một phương thức trong tệp .h bạn đang làm điều này bởi vì lớp và/hoặc thư viện bạn đang sử dụng không thực hiện một hàm bạn cũng cần chúng?
  4. Có trường hợp nào bạn khai báo phương thức không tồn tại trong bất kỳ thư viện nào hoặc tệp .h trong tệp .m của bạn không?

Cảm ơn tất cả mọi người Tôi hy vọng rằng tất cả đều có ý nghĩa.

+0

Tôi e rằng không ai trong số đó thực sự có ý nghĩa. :( –

+4

Erm ... nó có ý nghĩa hoàn hảo Chỉ cần trả lời ngay bây giờ – Fogmeister

Trả lời

15
  1. Được sử dụng để tách biệt giữa các phần công cộng và riêng tư của một lớp học. Tệp .m là implementation. Đó là nơi mà tất cả các logic đi, tất cả các dữ liệu được xử lý và lưu trữ, vv ... Tệp .h là interface của lớp đó. Nó giống như một API cho lớp của bạn. Nó cho các lớp khác biết cách sử dụng nó và cách giao tiếp với nó.

  2. Bạn nhập một lớp khi bạn tham chiếu nó trong một tệp. Nếu bạn tham chiếu một cái gì đó (tức là thuộc tính) trong giao diện thì bạn nhập nó vào .h. Nếu bạn chỉ tham khảo nó trong việc thực hiện sau đó bạn nhập nó trong .m.

  3. Bất kỳ phương pháp nào được khai báo trong .h đều có để các lớp khác biết rằng chúng có thể chạy. tức là chúng là phương pháp công khai. Hãy thử và loại bỏ một tuyên bố và sau đó gọi phương thức đó. Bạn sẽ nhận được một cảnh báo.

  4. Không, điều này sẽ không có ý nghĩa. Trừ khi bạn là một phần thông qua viết chương trình của bạn và tuyên bố nó cho mục đích thử nghiệm.

+0

mỗi câu trả lời của bạn cho câu hỏi 2. Tôi nghĩ rằng tôi hiểu phần đầu tiên. Bạn có thể giải thích có thể sử dụng một ví dụ phần thứ hai về việc tham chiếu một thực hiện. – Jadex1

+0

Khi tôi nói "tham chiếu nó trong quá trình triển khai", tôi chỉ sử dụng nó trong lớp .m. ví dụ. nếu bạn tạo một lớp tùy chỉnh gọi là 'MyCustomClass' và sau đó trong một bộ điều khiển xem bạn quyết định sử dụng nó. Sau đó, bạn sẽ cần phải nhập nó trong tập tin .m. – Fogmeister

3
  1. Bởi vì file .h là của lớp public interface
  2. Bởi vì đặt hàng nhập khẩu vào file .m làm cho họ tin và giữ sự phụ thuộc trên các file .h (ngăn chặn nhập khẩu phụ thuộc quá mức và circularities tiềm năng)
  3. Bạn đang thực hiện công khai rằng bạn cung cấp dịch vụ đó
  4. Bạn không nên, nếu không tồn tại, bạn không thể sử dụng nó (mặc dù bạn có thể khai báo những điều bạn hy vọng sẽ tồn tại và kiểm tra trước bạn thực sự cố gắng sử dụng chúng)

Tiền thưởng bổ sung cho 2. Trong tệp .h bạn nên nỗ lực để có số lượng nhập tối thiểu có thể (chỉ là lớp cha và bất kỳ giao thức nào bạn thực hiện công khai) và sử dụng @class cho mọi thứ khác. Điều này giảm thiểu các hàm ý phụ thuộc.

+0

Cảm ơn lời giải thích của bạn đã giúp tôi.Vì vậy, việc giữ các phương pháp trong tập tin .h giúp giữ chúng riêng tư – Jadex1

+0

@ Jadex1 nếu tôi đúng .m tập tin đó là riêng tư, như Fogmeister nói: "Các tập tin .m là việc thực hiện. Đó là nơi mà tất cả các logic đi, tất cả các dữ liệu được xử lý và lưu trữ, vv". – 0x1ad2

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