Спасибо. Хорошее объяснение на достаточно глубоком уровне. Таких видео очень не хватает. Все обычно объясняют не сильно глубже документации свифта. Есть много тем, которые было бы здорово раскрыть на таком же уровне - дженерики, память, экзистенциальность, рендеринг, xcode instruments, ... Еще раз спасибо.
Привет, что ты имеешь в виду на 17:35 примерно "размер массива будет равен количеству элементов одинаковому"? Размер массива всегда один и тот же, он не зависит от количества элементов)
Ну изначально да, все массивы одинакового размера. Но, когда мы все-таки дойдем до предела и нам нужно вставить новый элемент. То массив увеличивается в два раза (берется новый блок памяти туда копируется старое содержимое и добавляется новый элемент). Здесь я имел в виду фактический размер всех элементов, которые в массиве есть и механизм, который позволяет сохранять возможность обращения к этим элементам массива по индексу. Хотя, мы не знаем какого они размера (так как там просто протоколы указаны).
@@nikolai.developer ок, понял. зы. я про то, что если смотреть размер массива через memorylayout там всегда 8 будет, тк в нем ссылка на буфер лежит и больше ничего
@@nikolai.developer ок, понял зы. я про то, если смотреть через memorylayout, то всегда будет размер один и тот же, т.к. в массиве только ссылка на буфер лежит
Намудрили с протоколами в свифте. В c# куда проще с ними и угловые дженерики сразу поддерживаются. Сложно понять почему если два разных объекта, реализующих один и тот же протокол не могут быть возвращены в рамках одного метода, тип возврата которого и есть этот протокол.
Если я правильно вас понял, то могут быть возвращены. Но нужно указать any ProtocolName. Как возвращаемый тип. Согласен, что система сходу не простая. Если сложно запомнить или разобраться на первых порах можно просто к имени протокола добавлять ключевое слово any. Но, все это призвано, чтобы сэкономить память и время вызова уменьшить.
Там про existential container ты не правильно рассказал там хранятся pvwt(pointer to value witness table) pwt (pointer to Protocol Witness Table) а у теббы там virtual table хотя он для классов а не протоколов
Спасибо за замечание. Все верно. Основной момент, который хотелось рассмотреть - это разница any, some и в массиве "умещаются" объекты, которые могут быть разных размеров. Про таблицы говорилось для того, чтобы было понятие, что они там есть. В виде ссылок или самих значений не так принципиально. А про то то, что там VT - это да, ошибся когда составлял слайд.
Николай, большое спасибо вам за урок. Очень доходчиво объясняете.
Пожалуйста, рад, что вам понравилось.
Большое спасибо за видео. Очень понятно и без воды!
Спасибо за урок! Я бы с удовольствием посмотрел и послушал Ваше объяснение диспетчеризации.
Спасибо, на будущей неделе запишем.
Прод очень консервативен в таких вещах) Спасибо за объяснение!
Удивительно, что youtube только сейчас предложил Ваш канал
Большое спасибо за Ваши видео!
Пожалуйста.
Очень понятно построенно объяснение! Спасибо
Рад, что вам было полезно.
Спасибо. Хорошее объяснение на достаточно глубоком уровне. Таких видео очень не хватает. Все обычно объясняют не сильно глубже документации свифта. Есть много тем, которые было бы здорово раскрыть на таком же уровне - дженерики, память, экзистенциальность, рендеринг, xcode instruments, ... Еще раз спасибо.
Спасибо вам за отзыв.
Темы и видео будут появляться. Будем освещать.
@@nikolai.developer а почему мой коммент удалили
Спасибо, очень рад что наткнулся на ваш канал)
Спасибо.
Спасибо, все понятно!
Круто
Привет, что ты имеешь в виду на 17:35 примерно "размер массива будет равен количеству элементов одинаковому"?
Размер массива всегда один и тот же, он не зависит от количества элементов)
Ну изначально да, все массивы одинакового размера. Но, когда мы все-таки дойдем до предела и нам нужно вставить новый элемент. То массив увеличивается в два раза (берется новый блок памяти туда копируется старое содержимое и добавляется новый элемент).
Здесь я имел в виду фактический размер всех элементов, которые в массиве есть и механизм, который позволяет сохранять возможность обращения к этим элементам массива по индексу. Хотя, мы не знаем какого они размера (так как там просто протоколы указаны).
@@nikolai.developer ок, понял.
зы. я про то, что если смотреть размер массива через memorylayout там всегда 8 будет, тк в нем ссылка на буфер лежит и больше ничего
@@nikolai.developer ок, понял
зы. я про то, если смотреть через memorylayout, то всегда будет размер один и тот же, т.к. в массиве только ссылка на буфер лежит
Намудрили с протоколами в свифте. В c# куда проще с ними и угловые дженерики сразу поддерживаются. Сложно понять почему если два разных объекта, реализующих один и тот же протокол не могут быть возвращены в рамках одного метода, тип возврата которого и есть этот протокол.
Если я правильно вас понял, то могут быть возвращены. Но нужно указать any ProtocolName. Как возвращаемый тип.
Согласен, что система сходу не простая. Если сложно запомнить или разобраться на первых порах можно просто к имени протокола добавлять ключевое слово any.
Но, все это призвано, чтобы сэкономить память и время вызова уменьшить.
Супер
Спасибо.
Там про existential container ты не правильно рассказал там хранятся pvwt(pointer to value witness table) pwt (pointer to Protocol Witness Table) а у теббы там virtual table хотя он для классов а не протоколов
Спасибо за замечание. Все верно.
Основной момент, который хотелось рассмотреть - это разница any, some и в массиве "умещаются" объекты, которые могут быть разных размеров.
Про таблицы говорилось для того, чтобы было понятие, что они там есть. В виде ссылок или самих значений не так принципиально. А про то то, что там VT - это да, ошибся когда составлял слайд.
Да я понимаю что это не фокус был) видео то хорошое. Редко такой контент найдешь где