Ответ 1
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);
, когда использовать каждый?
Используйте сообщения/методы, если вы хотите получить доступ к некоторым свойствам объекта/класса. Хорошими примерами будут доступ к длине NSString:
int stringLength = [myString length];
Установка значения свойства:
[myObject setHidden:YES];
Или указать объекту выполнение какой-либо задачи:
[myAccount withdrawMoneyAndDriveToMexico];
Используйте C-style функции, если вы хотите выполнить задачу, не принадлежащую классу; то, что должно стоять в одиночестве. Хорошими примерами были бы математические функции, такие как:
double degrees = ConvertRadiansToDegrees(radians);