> On Mar 6, 2017, at 2:20 AM, Andrew Hill2 via swift-users > <swift-users@swift.org> wrote: > > Hi, > > I’ve been looking at making some changes to the ResearchKit library. This is > mainly written in Objective C, with small portions of Swift. > > The Pull request I’ve generated leveraged Swift generics to make handling > predicates easier from Swift. > > > The existing functions had to utilise different functions for each type of > object. > > The Swift function of course uses generics and simplifies that down to a > single function. > > To maintain Objective C compatibility, we still need to provide the original > functions for Obj C programmers. We don’t want to re-implement the functions > twice in two different ways, and we want Obj C programmers to use one set of > functions, and Swift programmers to only use the other one. > > > It’s easy enough to expose a function from Swift to Objective C code of > course. > > However, is there a way to expose a function in a Swift file which is ONLY > available externally to Objective C files and not to other Swift ones? (or at > least warns if called from Swift or something like that)? Basically an > @objconly ? > > The case described above is fairly trivial, but there are more complicated > areas where this would have a more marked effect. It would be nice not to > have Swift ResearchKit developers exposed to a load of API functions they > don’t need which are there only to support Obj C.
The closest thing might be to declare the methods as `@objc private`. They won't be exported to Swift, but ObjC code can still get at the method by its selector if you declare it in your ObjC headers. -Joe _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users