Khi nào tôi nên sử dụng các tin nhắn so với các chức năng kiểu C?Tin nhắn kiểu Smalltalk và Chức năng kiểu C
Trả lời
Mục tiêu-c tạo sự khác biệt cho bạn. Tin nhắn phải được gửi tới các đối tượng, nhưng chức năng có thể được sử dụng bất cứ lúc nào.
điệp Objective-C chỉ có thể được gửi đến các đối tượng, và các hệ thống tin nhắn là các cách để thực hiện cuộc gọi đến các phương pháp của một lớp.
Ví dụ:
// a class interface definition
// including a method named aMethod
@interface ANObject
{
}
- (void)aMethod;
@end
// a message sent to that object:
ANObject * myObject = [[ANObject alloc] init];
[myObject aMethod]; // <-- message
[myObject release];
chức năng:
Objective-C được thừa hưởng tất cả các ngôn ngữ C, vì vậy gọi hàm C-phong cách được hỗ trợ, và thậm chí được khuyến khích, khi tình huống kêu gọi họ. Các đối tượng Objective-C đơn giản được truyền xung quanh dưới dạng con trỏ, vì vậy bạn vẫn có thể truyền chúng tới các hàm làm đối số. Các cảnh báo và quy tắc thông thường về việc chuyển con trỏ đến các hàm nên, tất nhiên, được tôn trọng.
Ví dụ:
// a regular C-style function
void someFunction(ANObject * argument)
{
// do something here...
}
// and how to call it:
someFunction(someObject);
mỗi khi sử dụng?
Sử dụng tin nhắn/phương pháp khi bạn muốn truy cập vào một số đối tượng thích hợp. ví dụ tốt sẽ được tiếp cận theo chiều dài của một NSString:
int stringLength = [myString length];
Việc đặt giá trị của một tài sản:
[myObject setHidden:YES];
Hoặc nói một đối tượng để thực hiện một số nhiệm vụ:
[myAccount withdrawMoneyAndDriveToMexico];
Sử dụng C kiểu chức năng khi bạn muốn thực hiện tác vụ không thuộc về một lớp; cái gì đó nên đứng một mình. Ví dụ tốt sẽ là các hàm toán học như:
double degrees = ConvertRadiansToDegrees(radians);
Về cơ bản, hãy sử dụng thư bất cứ khi nào bạn xử lý thành phần C mục tiêu; nhiều hơn hoặc ít hơn bất cứ lúc nào bạn đang sử dụng loại NS *.
Trong trang bìa, bạn chủ yếu sử dụng các cuộc gọi hàm C trong mọi trường hợp; việc thực hiện ban đầu của Objective C là tiền xử lý cho C. Nhưng toàn bộ điểm sử dụng Objective C là nhận cú pháp Smalltalk giống như cú pháp, đó là những gì bạn có ở bất cứ đâu bên trong [].
Bạn đã hỏi rất nhiều câu hỏi Java; có lẽ một tương tự Java sẽ giúp.Trong trường hợp người ta sẽ sử dụng một phương thức trong Java, hãy sử dụng một thông điệp trong Objective-C. Trong trường hợp người ta sẽ sử dụng một phương thức tĩnh trong Java, hãy sử dụng một phương thức lớp trong Objective-C. Nếu bạn thấy mình tạo các gói tiện ích trong Java có đầy đủ các phương thức tĩnh, đó là một cái gì đó có thể có ý nghĩa như một hàm trong Objective-C.
Và, tất nhiên, nó có thể có ý nghĩa nếu bạn đang làm công cụ Objective-C++ lạ.
Cảm ơn bài đăng của bạn. – Jake