- PVSM.RU - https://www.pvsm.ru -
Quick Help научился брать документацию из комментариев:

Раньше нужно было ставить appledoc [1] (или аналог), компилировать и устанавливать .docset; теперь же достаточно просто написать документирующий комментарий [2], и Quick Help сразу его увидит.
Официальной документации по поддерживаемому синтаксису пока нет (по крайней мере, я не нашел), но используется что-то среднее между HeaderDoc [3] и Doxygen [4].
Первый абзац комментария используется в автодополнении, в Quick Help видны все:
/**
Brief description.
Brief description continued.
Details follow here.
*/
- (BOOL)doSomethingWithArgument:(NSString *)argument;


Само собой, поддерживаются стандартные теги @param, @return, а также некоторые другие, например, @note, @warning, @see, @code:
/**
Brief description.
Brief description continued.
Details follow here.
@note I am a note!
@warning Not thread safe!
@param argument Some string.
@return YES if operation succeeded, otherwise NO.
*/
- (BOOL)doSomethingWithArgument:(NSString *)argument;

Документировать можно не только отдельные методы, но и весь класс в целом:
/**
Example class to show the new cool XCode 5 feature.
Usage example:
@code
QHExample *example = [QHExample new];
BOOL result = [example doSomethingWithArgument:@"test"];
@endcode
*/
@interface QHExample : NSObject

Документирование свойств:
/// Description for exampleProperty.
@property (nonatomic) int exampleProperty;

Deprecated методы определяются автоматически:
/**
This method is deprecated!
@see '-anotherMethod'
*/
- (void)someMethod __attribute__((deprecated("use '-anotherMethod' instead.")));

Функции тоже поддерживаются:
/**
A function that always returns 42.
@param fArg Some float argument.
@return 42.
*/
int function_42(float fArg);

А макросы, к сожалению, — нет.
Есть поддержка enum:
/**
ROUChunkType description.
*/
enum ROUChunkType {
/// Data chunk.
ROUChunkTypeData = 0,
/// Acknowledgement chunk.
ROUCHunkTypeAck = 1
};
Но нет поддержки рекомендуемых [5] NS_ENUM и NS_OPTIONS.
Т.е. если записать:
/**
ROUChunkType description.
*/
typedef NS_ENUM(uint8_t, ROUChunkType){
/// Data chunk.
ROUChunkTypeData = 0,
/// Acknowledgement chunk.
ROUCHunkTypeAck = 1
};
то для констант описания в Quick Help и в автодополнении будут доступны, но для самого типа ROUChunkType — нет.

Для типов-структур ситуация получше: для самого типа нет описания в автодополнении, но в Quick Help есть, для полей есть и то и то.
/**
Chunk header description.
*/
typedef struct {
/// Chunk type.
enum ROUChunkType type;
/// Chunk length.
uint16_t length;
} ROUChunkHeader;
Зато хорошо работает документация для типов-блоков:
/**
A block with one argument returning BOOL.
@param arg Block's argument.
@return YES.
*/
typedef BOOL (^QHBlock)(id arg);

Кроме того, поддерживаются комментарии не только в интерфейсе, но и в реализации, в том числе для переменных:
- (double)perimeter{
/// The number π, the ratio of a circle's circumference to its diameter.
double pi = M_PI;
return 2 * pi * self.r;
}

Итого, стало на одну причину больше писать документирующие комментарии. Тем более, это совсем не трудозатратно, если использовать code snippets [6]. Например, для документирования метода можно создать сниппет:
/**
<#Brief#>
<#Description#>
@param <#Name#> <#Info#>
@param <#Name#> <#Info#>
@return <#Returns#>
*/
и повесить его на шорткат docmethod:

Тогда при наборе docmethod автодополнение автоматически предложит соответствующий шаблон.
Автор: Yan169
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ios/42396
Ссылки в тексте:
[1] appledoc: http://gentlebytes.com/appledoc/
[2] документирующий комментарий: http://ru.wikipedia.org/wiki/Генератор_документации#.D0.94.D0.BE.D0.BA.D1.83.D0.BC.D0.B5.D0.BD.D1.82.D0.B8.D1.80.D1.83.D1.8E.D1.89.D0.B8.D0.B5_.D0.BA.D0.BE.D0.BC.D0.BC.D0.B5.D0.BD.D1.82.D0.B0.D1.80.D0.B8.D0.B8
[3] HeaderDoc: https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/HeaderDoc/intro/intro.html
[4] Doxygen: http://www.stack.nl/~dimitri/doxygen/index.html
[5] рекомендуемых: http://nshipster.com/ns_enum-ns_options/
[6] code snippets: http://nshipster.com/xcode-snippets/
[7] Источник: http://habrahabr.ru/post/192310/
Нажмите здесь для печати.