Объявление функции Obj-C в заголовке - PullRequest
6 голосов
/ 25 октября 2011

Я пытаюсь поместить функцию в стиле C в заголовок класса Objective-C.(Моя терминология здесь может быть неправильной - я просто привык писать методы класса Objective-C, а не функции).Это выглядит следующим образом:

// Sort function
NSInteger sort(NSString *aString, NSString *bString, void *context);

NSInteger sort(NSString *aString, NSString *bString, void *context) {
    return [aString compare:bString options:NSNumericSearch];
}

К сожалению, это приводит к:

Ожидаемый атрибут '=', ',', ';', 'asm' или ' 'до' {'токен

Есть идеи, что мне не хватает?Спасибо.

Ответы [ 3 ]

11 голосов
/ 25 октября 2011

Я предполагаю, что вы поместили определение функции в @interface вашего класса. Вместо этого убедитесь, что объявления функций в стиле C находятся за пределами объявлений Objective-C @interface:

// declare C functions here
NSInteger sort(NSString *aString, NSString *bString, void *context);

@interface MyClass : NSObject
{
  // class instance vars
}

// class properties & instance methods
@end
2 голосов
/ 25 октября 2011

Тело вашей функции должно быть в файле .m, а не в заголовке.

Пока объявление вашей функции (NSInteger sort(NSString *aString, NSString *bString, void *context);) остается в заголовке, вы все равно будетевозможность доступа к функции сортировки из любого места, куда вы импортируете заголовок.

1 голос
/ 25 октября 2011

При объявлении методов в стиле C вы должны забыть о - или +. Просто объявите метод как стандартный C перед оператором @end:

void function_name(int, int);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...