Общие вопросы
Смешанные вопросы по Swift.
Открыть разделБаза Hintsage
Язык Swift и разработка приложений в экосистеме Apple.
Темы раздела
Смешанные вопросы по Swift.
Открыть разделТипы, функции, структуры, классы и базовая семантика.
Открыть разделOptionals, value/reference semantics, casting и pattern matching.
Открыть разделProtocols, extensions, associated types и generic constraints.
Открыть разделCollections, closures, map/filter/reduce и sequences.
Открыть разделARC, reference cycles, weak/unowned и время жизни объектов.
Открыть разделasync/await, actors, tasks и безопасность данных.
Открыть разделthrows, Result, defer и моделирование ошибок.
Открыть разделПрактика
После освобождения объекта, на который указывает weak-ссылка, что произойдёт с этой ссылкой и почему?
При объявлении метода класса как final какое ограничение получает наследник?
В практической ситуации параметр функции помечен @autoclosure: в какой момент вычислится переданное выражение?
Рассмотрите функцию, которая никогда не возвращает управление обычным путём: какой специальный тип результата позволяет Swift корректно использовать её вызов в выражениях?
Разберите ситуацию: во время длительного доступа к значению через параметр inout тот же объект читается другим способом. Почему Swift может завершить выполнение ошибкой эксклюзивного доступа?
При наследовании класса какой вид метода типа — static или class — позволяет позднее переопределение в наследнике?
Что изменится для автоматически созданного поименованного инициализатора структуры после добавления собственного инициализатора в её основное объявление?
В классе convenience-инициализатор пытается напрямую вызвать инициализатор суперкласса. Какое правило Swift нарушено?
Объясните механизм выбора реализации метода и определите, какой текст напечатает Swift:
protocol Describable {}
extension Describable {
func describe() -> String { "extension" }
}
final class Item: Describable {
func describe() -> String { "class" }
}
let value: any Describable = Item()
print(value.describe())
Что происходит при вызове функции, объявленной как throwing, если вызывающий код не обрабатывает возможную ошибку?
Какую роль играет явное обращение к self внутри escaping-замыкания Swift?
Зачем рекурсивному перечислению Swift требуется пометка indirect?
Наблюдается следующий код. Какой результат напечатает программа и почему второй вызов не создаёт частично инициализированный экземпляр?
struct Port {
let number: Int
init?(number: Int) {
guard (1...65535).contains(number) else { return nil }
self.number = number
}
}
let valid = Port(number: 443)
let invalid = Port(number: 0)
print(valid != nil, invalid == nil)
Как меняется контракт протокола после добавления ограничения AnyObject?
Функция возвращает результат, который вызывающий код намеренно игнорирует: как в Swift выразить это намерение без предупреждения компилятора?
В публичной структуре все хранимые свойства объявлены публичными, но внешний модуль не может вызвать автоматически созданный поименованный инициализатор. Какое правило Swift объясняет это поведение?
Значение произвольного типа сохранили в Any. Как Swift определяет, удастся ли безопасно извлечь его обратно в конкретный тип?
Какое ограничение Swift не позволяет добавить хранимое свойство в extension уже объявленного типа?
Что определяет метку аргумента функции при её вызове в Swift?
У вас есть базовый класс с обязательным инициализатором, а наследник объявляет собственный designated-инициализатор. Какую гарантию Swift проверяет через required в этом коде?
class Base {
required init() {}
}
class Child: Base {
let value: Int
init(value: Int) {
self.value = value
}
}
Показано 21–40 из 651