Каково определение метода удобства в отношении цели C?

В большинстве языков, с которыми я имел дело, один из них называется удобным методом. Это означает, что метод выполняет какую-то небольшую задачу, которая выполняется очень часто, и поэтому его удобнее использовать.

В Objective-C это определение верно? Или он обычно используется только для описания методов класса, которые возвращают готовый объект? бывший. [NSString строкаWithContentsOfFile:...]

Это просто предпочтение, или есть какое-то жесткое и быстрое определение для этих терминов?

Привет, Стефан


person Stefan H    schedule 23.02.2011    source источник


Ответы (2)


То, о чем вы говорите, на самом деле является более конкретным «конструктором удобства» в Objective C. (Обратите внимание, что на самом деле это не конструктор в смысле С++/Java/С#, это на самом деле метод инициализатора/фабрики объекта, но, похоже, это соглашение о вызове «удобных конструкторов»). «Удобные конструкторы» в Obj C - это соглашение или шаблон для создания конструктора/инициализатора/фабричного метода для класса, который принимает определенные параметры. Этот шаблон также имеет некоторые специальные соглашения, которым вы должны следовать (например, автоматическое освобождение нового объекта в конструкторе), чтобы ваши пользовательские классы хорошо сочетались со встроенными типами.

См. эту страницу (чуть ниже) для получения дополнительной информации: http://macdevcenter.com/pub/a/mac/2001/07/27/cocoa.html?page=3

Что касается «удобного метода», этот конкретный термин не имеет особого значения в Objective C. Вы можете создать любой тип удобного метода в Obj C, и нет никаких ожиданий относительно того, что он должен или не должен делать. Только "конструктор удобства" имеет особое значение.

person Andy White    schedule 23.02.2011
comment
Не конструктор, а фабрика или инициализатор (хотя последний обычно зарезервирован только для фактических методов init). В Objective-C нет конструкторов. - person Jonathan Grynspan; 23.02.2011
comment
Хороший вопрос... похоже, что эти конструкторы Convenience вызываются соглашением - person Andy White; 23.02.2011
comment
Во многих отношениях я думаю об удобных методах, которые возвращают готовые объекты, как о фабричных методах. - person Stefan H; 23.02.2011
comment
@Jonathan Grynspan: Как говорит Энди, Objective-C вызывает конструкторы этих методов. Они похожи на фабричные методы Java, но в целом термин конструктор предпочтительнее для таких методов в Objective-C, а фабрика используется не очень часто. В документации Apple используются оба термина и указывается, что они эквивалентны. Я думаю, что различие может заключаться в том, что одноэлементные методы доступа также считаются фабричными методами, поэтому конструктор удобства рассматривается как более конкретный. - person Chuck; 23.02.2011

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

В Objective-C «обычный» способ создания нового экземпляра — это что-то вроде NSSomething * mySomething = [[[NSSomething alloc] initWithParam:... andParam:...] autorelease]. Многие классы предоставляют удобные конструкторы, которые упрощают эти три шага (на самом деле, в большинстве случаев они, вероятно, делают буквально то же самое, но в оболочке вызова метода класса).

person dcrosta    schedule 23.02.2011