2011-07-12 16 views
23

Có sự khác biệt đáng kể giữa các hàm và phương thức trong Objective -C không?khác biệt c mục tiêu giữa các hàm và phương thức

+0

Bạn có hỏi sự khác nhau giữa các khối, chức năng và phương pháp không? – nil

+1

Không, tôi đã hỏi "có sự khác biệt đáng kể giữa chức năng và phương pháp không?" – NCFUSN

+2

Ok, do đó, các công cụ chặn trong câu hỏi là không liên quan .. – nil

Trả lời

71

Trước tiên, tôi là người mới bắt đầu trong Mục tiêu-C, nhưng tôi có thể nói những gì tôi biết.

Chức năng là các khối mã mà không liên quan đến một đối tượng/lớp, vừa được thừa kế từ c, và bạn gọi cho họ trong cách:

// declaration 
int fooFunction() { 
    return 0; 
} 

// call 
int a; 
a = fooFunction(); 

Trong khi phương pháp được gắn vào lớp/trường hợp (đối tượng) và bạn phải nói với lớp/đối tượng để thực hiện chúng:

// declaration 
- (int)fooMethod { 
    return 0; 
} 

// call 
int a; 
a = [someObjectOfThisClass fooMethod]; 
+1

Cảm ơn bạn MByD. Câu trả lời ngắn gọn và rõ ràng. – NCFUSN

+0

@MByD, chỉ là một điểm nhỏ ở đây, Python không có cả hai hàm và phương thức. –

+0

@ Fiorze - sai lầm của tôi, xóa phần gây hiểu nhầm ... – MByD

5

Nó thậm chí còn đơn giản hơn; một phương thức chỉ là một hàm C với hai đối số đầu tiên là đích của cuộc gọi phương thức và bộ chọn được gọi tương ứng.

I.e. mỗi trang gọi phương thức duy nhất có thể được viết lại dưới dạng một hàm C tương đương với hoàn toàn không có sự khác biệt về hành vi.


Trong chiều sâu câu trả lời ở đây: Why [object doSomething] and not [*object doSomething]? Bắt đầu với đoạn nói rằng "Bắt trở về gốc rễ C Preprocessor của ngôn ngữ, bạn có thể dịch tất cả các cuộc gọi phương pháp để một dòng tương đương với C".

+0

thật thú vị - bạn có thể hiển thị ví dụ về điều đó không và trong bước nào nó được chuyển đổi thành một cuộc gọi hàm đơn giản? Ngoài ra, bạn có thể chỉ cho tôi một số tài liệu về điều đó không? – MByD

+0

Cảm ơn bạn rất nhiều vì đã trả lời. – NCFUSN

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