Objective-c делает это различие для вас. Сообщения должны отправляться объектам, но функции можно использовать в любое время.
сообщения
Сообщения Objective-C могут отправляться только объектам, а система обмена сообщениями позволяет совершать вызовы методов класса.
Пример:
// 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];
функции
Objective-C наследует весь язык C, поэтому вызовы функций в стиле C поддерживаются и даже поощряются, когда ситуация вызывает их. Объекты Objective C просто передаются как указатели, так что вы все равно можете передавать их в функции в качестве аргументов. Конечно, следует соблюдать обычные предостережения и правила, касающиеся передачи указателей на функции.
Пример: * * тысяча двадцать-восемь
// a regular C-style function
void someFunction(ANObject * argument)
{
// do something here...
}
// and how to call it:
someFunction(someObject);
когда использовать каждый?
Используйте messages / method , когда вы хотите получить доступ к некоторой собственности на объект / класс. Хорошими примерами будет доступ к длине строки NSString:
int stringLength = [myString length];
Установка значения свойства:
[myObject setHidden:YES];
Или указание объекту выполнить какое-либо задание:
[myAccount withdrawMoneyAndDriveToMexico];
Используйте C-style functions , когда вы хотите выполнить задачу, которая не принадлежит классу; то, что должно стоять в одиночестве. Хорошими примерами могут быть математические функции, такие как:
double degrees = ConvertRadiansToDegrees(radians);