Wingzero Wingzero - 11 days ago 5
Swift Question

Can we add @objc for swift function that returns optional value?

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

Answer

Int is a structure defined in Swift which listed in Swift-only features

https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_Int_Structure/index.html#//apple_ref/swift/struct/s:Si

So the answer is No

you need to break it into two function or some other workaroud