Objective C: переменные экземпляра из объема в отладчике

2 - этот быстрый интерфейсный подход является просто заменой для не существующих именованных параметров метода в C#? Был бы названные параметры делать быстрые интерфейсы устаревшими, например, что-то подобные объективные-C предложения:

Хорошо да и нет. Быстрый интерфейс дает Вам большее количество гибкости. Что-то, что не могло быть достигнуто с именованными параметрическими усилителями:

sizer.FromImage(i)
 .ReduceByPercent(x)
 .Pixalize()
 .ReduceByPercent(x)
 .OutputImageFormat(ImageFormat.Jpeg)
 .ToLocation(o)
 .Save();

FromImage, ToLocation и OutputImageFormat в жидком интерфейсе, пахнут немного мне. Вместо этого я сделал бы что-то вдоль этих строк, которые я думаю, намного более ясно.

 new Sizer("bob.jpeg") 
 .ReduceByPercent(x)
 .Pixalize()
 .ReduceByPercent(x)
 .Save("file.jpeg",ImageFormat.Jpeg);

Быстрые интерфейсы имеют те же проблемы много методов программирования, они могут неправильно использоваться, злоупотребили или недогруженный. Я думаю, что, когда эта техника используется эффективно, она может создать более богатую и более краткую модель программирования. Даже StringBuilder поддерживает его.

var sb = new StringBuilder(); 
sb.AppendLine("Hello")
 .AppendLine("World"); 
5
задан Rónán Ó Braonáin 14 October 2009 в 14:32
поделиться

1 ответ

GDB не является компилятором Objective-C. Компилятор знает о таких вещах, как лексическая область видимости в методах Objective-C, а GDB - нет. Однако он понимает локальные переменные.

В Objective-C каждый метод имеет неявный параметр self , передаваемый ему при вызове. Итак, когда вы смотрите на self-> str , GDB интерпретирует это так же, как и любую другую оценку локальной переменной.

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

7
ответ дан 14 December 2019 в 08:55
поделиться