Существует несколько проблем с кодом, который вы опубликовали.
Прежде всего, соглашение в Cocoa Touch является то, что имена классов используют верблюжье дело и начать с прописной буквой: MathClass
, неmath_class
. Названия методов используют верблюжий случай, и каждое ключевое слово начинается с буквы нижнего регистра. Если вы придерживаетесь соглашения об именах, другим людям будет легче понять ваш код, поэтому вам будет легче получить помощь, когда у вас возникнет проблема.
Теперь в вашем math_class
классе, вы объявили метод, как это:
+ (double) add_function: (double) number_one: (double) number_two;
Но вы клали в пространствах и оставил вне помещения необычным способом. Обычный способ записать его, сохраняя в точности то же имя метода, выглядит следующим образом:
+ (double)add_function:(double)number_one :(double)number_two;
Имя этого метода является add_function::
, неadd_function number_one:number_two:
(который является то, что вы использовали, чтобы попытаться назвать его).
Это имя метода имеет два ключевых слова. Первое ключевое слово: add_function:
и принимает аргумент double
с именем number_one
.Второе ключевое слово - это только :
и принимает аргумент double
с именем number_two
.
Вы могли называют этот метод так:
total = [math_class add_function:first_number :second_number];
Однако, используя имя метода с ключевым словом просто :
почти всегда очень плохой стиль.
Существует множество способов написать свой класс в хорошем стиле. Вот один из способов:
@interface MathClass : NSObject
+ (double)sumWithNumber:(double)firstNumber number:(double)secondNumber;
@end
@implementation MathClass
+ (double)sumWithNumber:(double)firstNumber number:(double)secondNumber {
return firstNumber + secondNumber;
}
@end
Когда метод используется в основном для возвращаемого значения, а не за побочных эффектов, мы называем это после того, как вещь она возвращается. Поэтому я назвал его sumWithNumber:number:
, потому что он возвращает сумму.
Имя метода имеет два ключевых слова. Первое ключевое слово: sumWithNumber:
и принимает аргумент double
с именем firstNumber
. Второе ключевое слово: number:
и принимает аргумент double
с именем secondNumber
. Вы можете называть это следующим образом:
total = [MathClass sumWithNumber:first_number number:second_number];
Является ли 'add_function' свойство на' math_class'? Эта строка кода трудно понять. –
Нам нужно больше кода. Что такое подпись метода для 'add_function' ?. Кроме того, что такое 'math_class'? – gregheo
Добавлен больше кода. – ConfusedDeer