В классе Swift, полученном из основанной на Obj-C фреймворка (но так же легко может быть класс Swift с атрибутом @objc), я объявляю два сохраненных свойства:
var optInt: Int?
var optString: String?
Только optString подвергается Obj-C через сгенерированный заголовок -Swift.h.
Строка? по-видимому, прекрасен, потому что он отображается с использованием объекта NSString, который может быть равен нулю, поэтому мостик имеет способ не представлять значения.
Если я удалю? от optInt он подвергается воздействию типа NSInteger, поэтому я вижу, что для не необязательных целых чисел он избегает объектов типа объектов и мостов для типа значений, но означает ли это, что Int? не может быть выставлен?
Я не могу найти какую-либо документацию, в которой явным образом говорится, что это так. Существует целый список несовместимых функций Swift, которые здесь не отображаются: Использование Swift из Objective-C
Здесь используется классическая ситуация, требующая прохождения числового идентификатора, который может быть законным равным нулю. В мире Pre-Swift NSNumber и nil - это именно то, как я начал реализовывать это, но просто неправильно пытаться перенести класс в Swift, но затем, по этой причине, висящим на Obj-C типах класса Swift.
Я полагаю, что я предусмотрел, что Int? в отличие от Int, будет мостиком в качестве NSNumber в фоновом режиме, с его потенциально нулевым значением, в котором элемент "не имеет значения" необязательно в Swift.
Есть ли что-то, что мне не хватает здесь? Чтобы повторить, может ли Swift Option Int (Int?) Быть подвержен Objective-C через мосты?