Обновить
4

Пользователь

0,1
Рейтинг
5
Подписчики
Отправить сообщение
Не совсем согласен
В non-arc объект уничтожается незамедлительно после того, как referenceCount становится равным нулю. То есть, если бы вместо autorelease вызывался бы release — autorelease pool бы не использовался и утечки бы не было бы.
Ну, тут вопрос в том, как именно ARC расставит вызовы. Если бы он релизил объекты при присваивании (как это делалось в setter'ах в non-arc) — то утечки памяти всё равно не было бы.
Вообще — неплохой чеклист по знаниям. Надо бы почитать про работу ARC с блоками что-нибудь, остальное не критично.
Да, пожалуй, потом я тоже подумал о том, что здесь могут возникнуть проблемы c работой ARC из-за того, что поток никогда не будет освобождён. Точного механизма его работы я не знаю, только общие принципы.
Но расход памяти здесь — далеко не самая главная проблема :)
У меня складывается такое впечатление, что смысле не в правильном ответе на эти вопросы, а в том, КАК человек на них ответит.
Например, в фирме, где я сейчас работаю, в тестовые задания ошибки вставляют специально.
> почему в этом коде утечка памяти и как устранить?
Здесь используется arc?
Если да, то утечки памяти здесь нет.

В общем часть вопросов выглядят так, как будто они пришли из времён iPhone OS 3.0
Проблема в VIPER, которую я вижу (ну или в том понимании Вайпера, которое у меня есть — я могу ошибаться), это то, что у него нет сущности, способной делать выбор, какой экран показать дальше в случае сложного и нелинейного workflow.

По идее, это должен быть wireframe, но он не должен обращаться к данным.
Ближайший объект, который может сделать этот выбор — это Presenter, но конкретный Презентер работает с конкретным подмножеством данных, и для этого выбора ему нужно запросить дополнительные данные. К тому же выбор переходов перестаёт быть очевидным из-за того, что ответственность размазывается по множеству классов.
Можно попробовать, как мне тут подсказывают, ввести дополнительный презентер в цепочку вызовов, но это ЕЩЁ больше бойлерплейта.
В общем, удовлетворительного решения этой проблемы я пока не вижу.
В данном случае я имел ввиду редактор XAML в Visual Studio: помимо функционала визуального редактора он так же умеет делать автозавершение и автоматическую генерацию методов. В основном это вызвано тем, что концепция MVVM для WPF родная.
Кажется, вы меня неправильно поняли. Я имею к этому проекту отношение только как пользователь. Ну и я имел ввиду в рамках обычного цикла статей, таких, как эта.

В любом случае, спасибо за ответ. А вот вашим, хм, клиентом, я смогу стать когда вы научите PVS-Studio в Objective-C/Swift :)
Давно не следил за вашими постами, потому есть вопрос:
Могу ли я бесплатно проверить коммерческий проект с открытым кодом? Если да, то как мне это сделать? А можете ли это сделать вы и написать статью? :)
Проблема в том, что вы замучаетесь писать биндинги и конвертеры вручную, если у вас нет достаточно мощного инструмента.
С другой стороны — вопрос быстродействия. Первый кандидат на роль биндингов — KVO, но чаще всего — это плохая идея с точки зрения быстродействия. Значит нам нужны свои собственные dependency property. А ещё нужна реализация двухсторонних биндингов для пользовательского ввода.

В другой стороны, можно (и нужно) просто скинуть всю визуальную логику в потомок от UIView и сделать его вьюхой контроллера, оставив в UIViewController только делегаты и обновление данных.

В общем, я не уверен, что оно того стоит. Как баловство в каком-то своём проекте — почему бы и нет? А вот для чего-то серьёзного — я бы не стал использовать этот подход напрямую.
Имхо, главная проблема MVVM — без хорошего редактора он ничего не стоит. Так что я не уверен, что попытки использовать этот паттерн в Obj-C/Swift принесут ожидаемый результат.
Кстати, а он уже научился не хранить пароли в открытом виде?
Мне всё равно не нравится… С тем же успехом можно большим количеством маленьких девяток шестёрку выстроить.
Пардон. Я успел сообщение поправить, пока вы коммент писали. Перечитал задачу внимательнее.
Вообще, похоже, ключевое слово «заполнить». Это не «подставить».
Если уж «заполнять», то 6 + 11 + 13
Упс. Чукча не читатель. Но тогда задача вот уж точно решения не имеет: там чётко сказано, что в записи — числа, а не их обрывки
Это 1.3 + 5.7 + 13, но сути это таки не меняет.
Кстати, я тут подумал: некоторые кодеры пишут код вот точно так же, как эта задача составлена.
Окей: «нет решения в данных условиях: хотя бы одно из слагаемых должно быть чётным, но в списке чисел таковых нет»
Это тоже является решением задачи.
Их тут нет:
Если вы в качестве десятичного знака запятую, то разделителями чисел выступает точка с запятой (";"). («по-русски»)
Если вы хотите использовать запятую в качестве разделителя, то вы допжны использовать точку как десятичный разделитель («по-английски»). Ну или поставить пробелы как положенно в типографике, в конце концов («по-человечески»).

Так что условие таки некорректно.

Информация

В рейтинге
3 884-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность