описание переопределения или stringValue в какао?

Вы могли сделать это с функцией прототипа:

void something(int i, string P1) {
    something(i, P1, String.Empty);
}

void something(int i, string P1, string P2) {
    something(i, P1, P2, String.Empty);
}

void something(int i, string P1, string P2, string P3) {
    something(i, P1, P2, P3, String.Empty);
}

и так далее...

5
задан mvexel 14 December 2009 в 10:44
поделиться

4 ответа

описание - это то, что нужно, это то, что он называется для предоставления строкового представления объекта.

- (NSString*)description
{
    return [NSString stringWithFormat:@"%@, %@; %@", a, b, c];
}

Я полагаю, это также предложено в книге Хиллегасса.

5
ответ дан 18 December 2019 в 09:07
поделиться

Вы также можете переопределить [NSObject debugDescription], который вызывается отладчиком. Это то, что вызывается при использовании "print to console" в отладчике. Вы также можете вызвать его прямо в NSLog.

По умолчанию в большинстве классов debugDescription просто вызывает описание , но вы можете заставить их возвращать отдельные строки. Это хорошее место для загрузки подробностей.

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

У меня есть категория отладки для UIView, которая выгружает все атрибуты, о которых я мог подумать. Если я обнаруживаю неприятную ошибку, я просто включаю категорию, и тогда я могу видеть все о каждом представлении прямо в консоли отладчика.

2
ответ дан 18 December 2019 в 09:07
поделиться

Я лично отменяю description практически во всех создаваемых мной подклассах. Я предполагаю, как Том Дакеринг пишет в своем комментарии, что ваша цитата применима только к управляемым объектам.

- (NSString *)description
{
    return [NSString stringWithFormat:@"%@ <%p>", NSStringFromClass([self class]), self];
}
7
ответ дан 18 December 2019 в 09:07
поделиться

To answer your question from the other direction, stringValue is something altogether different—it doesn't describe the receiver, it's a property of it. Your custom description may even include the stringValue, or an excerpt of it if it's long.

A key difference is that stringValue is often a mutable property (see, for example, that of NSControl), whereas description is always an immutable property, computed upon demand.

4
ответ дан 18 December 2019 в 09:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: