- PVSM.RU - https://www.pvsm.ru -

Quick Help для своего кода в XCode 5

Quick Help научился брать документацию из комментариев:

Quick Help для своего кода в XCode 5

Раньше нужно было ставить appledoc [1] (или аналог), компилировать и устанавливать .docset; теперь же достаточно просто написать документирующий комментарий [2], и Quick Help сразу его увидит.
Официальной документации по поддерживаемому синтаксису пока нет (по крайней мере, я не нашел), но используется что-то среднее между HeaderDoc [3] и Doxygen [4].

1)

Первый абзац комментария используется в автодополнении, в Quick Help видны все:

/**
 Brief description.
 Brief description continued.
 
 Details follow here.
 */
- (BOOL)doSomethingWithArgument:(NSString *)argument;

Quick Help для своего кода в XCode 5
Quick Help для своего кода в XCode 5

2)

Само собой, поддерживаются стандартные теги @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;

Quick Help для своего кода в XCode 5

3)

Документировать можно не только отдельные методы, но и весь класс в целом:

/**
 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

Quick Help для своего кода в XCode 5

4)

Документирование свойств:

/// Description for exampleProperty.
@property (nonatomic) int exampleProperty;

Quick Help для своего кода в XCode 5

5)

Deprecated методы определяются автоматически:

/**
 This method is deprecated!
 
 @see '-anotherMethod'
 */
- (void)someMethod __attribute__((deprecated("use '-anotherMethod' instead.")));

Quick Help для своего кода в XCode 5

6)

Функции тоже поддерживаются:

/**
 A function that always returns 42.
 
 @param fArg Some float argument.
 
 @return 42.
 */
int function_42(float fArg);

Quick Help для своего кода в XCode 5
А макросы, к сожалению, — нет.

7)

Есть поддержка 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 для своего кода в XCode 5

8)

Для типов-структур ситуация получше: для самого типа нет описания в автодополнении, но в Quick Help есть, для полей есть и то и то.

/**
 Chunk header description.
 */
typedef struct {
    /// Chunk type.
    enum ROUChunkType type;
    /// Chunk length.
    uint16_t length;
} ROUChunkHeader;
9)

Зато хорошо работает документация для типов-блоков:

/**
 A block with one argument returning BOOL.
 
 @param arg Block's argument.
 
 @return YES.
 */
typedef BOOL (^QHBlock)(id arg);

Quick Help для своего кода в XCode 5

10)

Кроме того, поддерживаются комментарии не только в интерфейсе, но и в реализации, в том числе для переменных:

- (double)perimeter{
    /// The number π, the ratio of a circle's circumference to its diameter.
    double pi = M_PI;
    
    return 2 * pi * self.r;
}

Quick Help для своего кода в XCode 5

Заключение

Итого, стало на одну причину больше писать документирующие комментарии. Тем более, это совсем не трудозатратно, если использовать code snippets [6]. Например, для документирования метода можно создать сниппет:

/**
 <#Brief#>
 
 <#Description#>
 
 @param <#Name#> <#Info#>
 @param <#Name#> <#Info#>
 
 @return <#Returns#>
 */

и повесить его на шорткат docmethod:
Quick Help для своего кода в XCode 5
Тогда при наборе 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/