2012-06-06 2 views
0

Для всех намерений и целей, объявление метода Objective-C является просто функция C, которая присоединяет два дополнительных параметра (см «Сообщения» в Objective-C Время воспроизведения Руководство по программированию). Таким образом, структура объявления объекта Objective-C отличается от структуры метода, который использует параметры имени или ключевого слова на языке, таком как Python, поскольку следующий пример Python иллюстрирует: В этом примере на Python Thing и NeatMode могут быть опущены или могут иметь разные значения при вызове.значения по умолчанию Python в объявлении метода против Objective-C

def func(a, b, NeatMode=SuperNeat, Thing=DefaultThing): 
    pass 

Какова цель показать этот пример на книги Objective-C, связанные?

+0

[Источник] (http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocObjectsClasses.html) – kevboh

ответ

1

Это является (плохо) пример того, как Objective-C не поддерживает некоторые функции, которые другие языки, (например, Python) может , Текст объясняет, что в то время как Objective-C имеет «именованные параметры» формата

- (void)myMethodWithArgument:(NSObject *)argument andArgument:(NSObject *)another; 

Эти параметры не поддерживают значения по умолчанию, которые Python делает.

Упоминание о двух аргументах указывает на то, как сообщение, передающееся в Objective-C, работает под капотом, которое заключается в добавлении каждого метода к объекту-получателю и селектору. Вам не нужно знать эту деталь, чтобы писать код в Objective-C, особенно на уровне новичков, но Apple объясняет этот процесс here.

+0

jinkies! Так вот какая загадка :) ....... теперь я понял, что эти предварительные параметры для демонстрации показывают, что obj-c не горе rk таким образом .. thankssssssss много для прекрасного ответа. :) –

0
def func(a, b, NeatMode=SuperNeat, Thing=DefaultThing): 
    pass 

NeatMode, Thing являются необязательными названные параметры в Objective C они будут

- (void) func:(int)a :(int)b NeatMode:(object*)SuperNeat Thing:(object*)DefaultThing 

Отвод подробнее об этой теме http://www.diveintopython.net/power_of_introspection/optional_arguments.html

+0

Обратите внимание, что Objective-C не имеет необязательных аргументов. – kevboh

+0

весь этот пара из руководства пользователя obj-c http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocObjectsClasses.html –

+0

Да, извините, что я имел в виду именованные аргументы –

0

Я думаю, что дело здесь различать между тем, как вы «используете» для получения параметров в функциях и как объективно-c. Обычно:

public void accumulate(double value, double value1) {          

} 

И в Objective-C:

-(void)accumulateDouble:(double)aDouble withAnotherDouble:(double)anotherDouble{ 


} 
Смежные вопросы