I have a swift method like:
public func xIndexAtPoint(point: CGPoint) -> Int?
I want to expose it to Objective-C runtime, so I add @objc before it.
Method cannot be marked @objc because its result type cannot be represented in Objective-C
I am not sure why optional value is not allowed, since Apple does not mention it in https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html
You’ll have access to anything within a class or protocol that’s marked with the @objc attribute as long as it’s compatible with Objective-C. This excludes Swift-only features such as those listed here:
Generics
Tuples
Enumerations defined in Swift
Structures defined in Swift
Top-level functions defined in Swift
Global variables defined in Swift
Typealiases defined in Swift
Swift-style variadics
Nested types
Curried functions
(nullable)
keyword adds support for this. It is automatically unwrapped in objective c so that an optional that contains null in swift will just be nil/null in objective c – Rob Sanders