Artur
В идеальном мире клиент должен быть максимально тупым.
не, в идеальном мире клиент в случае падения сервера сам становится сервером и вообще каждый клиент содержит в себе сервер
Денис
Конвертация делегатов в блоки. Есть некий класс N, который после вызова метода результат своей работы приносит делегату. В параметрах классически приходит указатель на самого себя и какой-то результат. Необходимо делегатную систему обернуть в block callbacks. Но после того, как вызван метод и передан в него completeion блок, нужно этот блок сохранить, чтобы в будущем вызвать при срабатывании делегатного метода. Это логично. Однако дела обстоят сложнее, если начинается многопоточная работа. Для каждого вызова метода с передачей callback блока, надо не просто запоминать сам блок, надо ставить ассоциацию непосредственно созданному объекту исходного класса N и этому самому блоку, чтобы при срабатывании делегатного метода смотреть, от какого класса он пришел и вызывать ассоциированный с ним блок. Ассоциации… NSDictionary? Казалось бы да, однако используемые в качестве ключей объекты должны реализовывать NSCopying. Чего у исходного класса N, разумеется, нет. Вопрос, что делать? Создавать еще одну прослойку и наследоваться от класса N, реализуя копирование? Как-то лениво) Или может подойдет Assoctiated Objects из рантайма. Прицеплять каждому объекту N в качестве ассоциации блок колбэка?
Денис
Капец я настрочил
Ignat
неа
Ignat
Необходимо делегатную систему обернуть в block callbacks.
Ignat
переделай просто на блоки торчащие наружу
Ignat
для начала
Денис
Смысл в том, что на каждый вызов метода с колбэком создается новый объект N и ему назначается делегат в виде класса-обертки. Где-то надо хранить и объекты, и связанные с ними completion блоки, чтобы потом зная, от какого объекта пришел результат, найти какой completion блок ему соответствует для вызова
Stanislav
Смысл в том, что на каждый вызов метода с колбэком создается новый объект N и ему назначается делегат в виде класса-обертки. Где-то надо хранить и объекты, и связанные с ними completion блоки, чтобы потом зная, от какого объекта пришел результат, найти какой completion блок ему соответствует для вызова
В синглтоне хранишь в массиве объекты M, которые являются делегатами класса N, по вызову делегатского метода они дёргают присвоенный им блок (у объекта M есть свойство-блок который задантся тобой), после срабатывания колбека объект M говорит синглтону о том, что он отработал и синглтон убирает его из массива
Stanislav
То есть completion block у тебя это свойство твоего объекта M, никакие словари не нужны
Денис
Сейчас еще нагуглил про такую структуру данных, как NSMapTable. Можно явно задавать параметры управления памятью как для ключей, так и для значений. Эдакий продвинутый ассоциативный массив
Stanislav
Да, как вариант, спасибо. Как я понимаю, надо создавать дополнительно этот проксирующий класс M, и ему назначать свойство parent - куда он должен обратиться для самовыпливания из массива.
У меня просто была подобная проблема, у меня такие объекты создавались с помощью метода синглтона, насколько я помню (то есть дергался статичный метод, в который передавался блок с нужными данными, а синглтон сам создавал вспомогательный объект, назначал ему этот блок и сохранял в свой массив), а убивались они юзая что-то вроде objectDidFinishWork: у синглтона, передавали указатель на себя, синглтон смотрел, есть ли такой объект в массиве и если есть, то убивал его окончательно
Stanislav
@synchronized был на добавление таска и на завершение, так что с многопоточной работой никаких проблем не было
Дмитрий
Привет всем! Учусь iOS разработке, в скором времени планирую искать работу. Подскажите, какие вопросы сейчас актуальны на собеседованиях на должность джуниора на Objective-C?
Деда
Самый важный вопрос
Дмитрий
Ну в идеале да, но согласился бы на минимум
Деда
😀 я шучу
Дмитрий
Понимаю, но всяко может быть )
Vladimir
Вам нужно платить зарплату?
Скорее сколько вы готовы нам платить за то, чтобы с нами поработать :)
Деда
Дмитрий, спроси лучше у Димаса, у нас такой в чате есть
Деда
Он любит новичков консультировать
Деда
Я порой даже удивляюсь, отуда у человека столько свободного времени
Деда
Я думаю он даже подготовить может
Деда
Dmitry Mezonin
Денис
Еще есть похожий большой сборник с ответами, который почему-то выпилили с гитхаба. Но я схоронил. Если надо - могу найти
Деда
Пришли Денис
Дмитрий
Dmitry Mezonin
Спасибо за совет, думаете напрямую писать стоит?
Деда
Можно тут даже
Денис
Денис
кстати, как md файл заставить нормально отображаться не на гитхабе?
Денис
если сможете, то получите встреонные картинки
Деда
Спасибо, пригодится
Деда
Когда 40 лет наступит
Деда
😀
Деда
Через 4 года вскрою пакет
Денис
А в чем проблема?
а хотя хкод открывает, да
Денис
просто в sublime открывал
Денис
еще вот что то нашел
Денис
Пока совсем не забыл,часть вопросов с собеседования на iOS junior, извиняюсь, что все вперемешку 🙂 1) Назвать различия Swift и Obj-C какие для тебя кажутся основными 2) Можно ли в Swift делать статические поля 3) Value type / Reference type что такое (параметры) 4) Что такое мьютекс/семафор/дедлок 5) Назвать какие паттерны программирования знаешь, по некоторым какие-то дополнительные вопросы были (Что запомнил: чем медиатор от фасада отличается, чем плох сиглтон, где применяется команда) 6) Вопросы по gcd и nsoperation, какие отличия, что где лучше использовать, по gcd почти на все штуки аля группы, барьеры, семафоры.. были вопросы, по noperation то же отмены, зависимости…) По некоторым кускам кода сказать какие проблемы, дедлоки там, race condition и.т.д 7) Как синхронизацию между потоками делать 😍 Написать разворот строки 9) Какие проблемы у MVC, как решаются 10) Вопросы по runtime: method swizzling, msg_obj_send, ассоциированные объекты, проверка на принадлежность классу, наличие методов 11) Как сделать проперти в именованной категории (и можно ли) 12) Какие коллекции есть в obj-c, когда какую выбирать, как написать стек/очередь 13) Различие nonatomic/atomic у проперти, как написать потокозащищеный класс 14) Рассказать про weak,strong,retain,unsafe_unretaind, assign, copy чем отличаются, когда что использовать, как сделать copy для своего класса, что будет если классу на реализующему NSCoding послать copy 15) Про MRR рассказать основы 16) Про блоки, как захватывают переменные, на стеке или в куче, что меняется с модификатором __block 17) Как обойти retain cycle, по крайней мере 2 способа 18) Зачем нужен NSCoding 19) Core Data, что это, зачем нужна, описать основную архитектуру, как работать из разных потоков 20) Как вообще происходит динамическое связывание методов, описать процесс 21) Рассказать про NSRunLoop 22) Рассказать про autorelease и autorelease pool 23) Что будет если объекту два раза послать авторелиз 24) Когда чистится авторелизпул 25) Разные вопросы про контроллеры, что такое parent, child, presented… 26) Chain of responsibility рассказать что такое, был код когда кнопке привязываем action, а в target nil ставим , что произойдет 27) Как вложенные контроллеры делать 28) Рассказать про анимации как внутри устроены 29) Рассказать про CALayer, как кастомную вьюху с закругленными краями, тенями и.т.д сделать 30) KVC/KVO что такое/ когда применять 31) Шифрование синхронное/асинхронное AES/RSA например 32) Про instruments, как и зачем использовались, зомби объекты, ъпрофайлеры 33) Различия nil, Nil, NSNull
Денис
Еще на хабре есть
Денис
https://habrahabr.ru/post/322252/
Dmitry
Сочувствую фронтент разработчикам, столько го.на надо в голове держать ненужного.
Деда
А вот и Димас
Деда
Непоколебимый истребитель бинарных телок
Денис
видимо парень настолько хорошо на все отвечал, что решили жахнуть вопрос не по теме, чтобы снизитьь зарплатные ожидания
Денис
xD
Денис
я хз
Денис
в вк в группе скутаренко копирнул
Valery
обжс нужен, а свифт нет
Valery
я прошел собеседование?
Денис
Но погоняли все таки неслабо по темам
Дмитрий
Судя по моему региону, обжектив нужен, а свифт по желанию )
Дмитрий
Новосибирск и окрестности
Денис
Денис
лол
Artur
Какой раён?
Дмитрий
😅
Дмитрий
Дзержинский
Dmitry
Жириновский же верно сказал о том, кто за Уралом живет.
Lex3m
Ребят, кто нибудь верстает под айпады?)))
Ivan
Ребят, кто нибудь верстает под айпады?)))
Определенно, кто-нибудь да верстает.
Lex3m
Очень бы хотелось этого кого нибудь))
Lex3m
Напишите плз в личку, кому интересно
Ivan
Поверстать или быть желаемым?
Viacheslav
можно ли внутри сабкласса UIView сделать dismiss UIViewController-a, который будет его отображать?
Lex3m
Сначала первое)) но и второе взаимосвязано ;)
Andrew
бррр
Lex3m
Пиши в лс, договоримся :)
Andrew
а что тебе в айпеде надо? сплитвьюконтроллер?