Xcode 10.2 updated compiler with new feature:
To reduce the size taken up by Swift metadata, convenience
initializers defined in Swift now only allocate an object ahead of
time if they’re calling a designated initializer defined in
Objective-C. In most cases, this has no effect on your app, but if
your convenience initializer is called from Objective-C and doesn’t in
turn delegate via self.init to an initializer exposed to Objective-C,
the initial allocation from alloc is released without any initializer
being called. This can be problematic for users of the initializer
that don’t expect any sort of object replacement to happen. One
instance of this is with initWithCoder:: the implementation of
NSKeyedUnarchiver may behave incorrectly if it calls into Swift
implementations of initWithCoder: and the archived object graph
contains cycles. To avoid this, ensure that convenience initializers
that don’t support object replacement always delegate to initializers
that are also exposed to Objective-C, either because they’re defined
in Objective-C, or because they’re marked with @objc, or because they
override initializers exposed to Objective-C, or because they satisfy
requirements of an @objc protocol. (46823518)"
https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_release_notes/swift_5_release_notes_for_xcode_10_2?language=objc
I had MyClass in Storyboard scene:

If MyClass has convenience init() which calls designated initializer, then it should be marked with @objc:
class MyClass: NSObject {
override convenience init() {
self.init(int: 42)
}
// Add @objc to stop crashes
@objc init(int: Int) {
super.init()
}
}