Xcode plans are a little beyond the scope of the Swift project, so I can't promise that there would be any such autoupdating. If there were such a feature, I'd expect it to be in the form of a one-time migration, probably triggered along with the Swift 3 migrator…but the IB team might have other ideas, or decide they have more important things to finish for this release. So I guess the answer is "don't count on it".
Jordan > On Jun 27, 2016, at 21:56, Charlie Monroe <[email protected]> wrote: > > Do you know how would this affect e.g. XIB files or CoreData models where you > have the class name + module? If the class was previously marked @objc and > now it would be implicitely @objc(ClassName), would it require all XIB files > to be updated, or would the XIB compiler be able to deal with it? If the > former, than it's a big no for me. > > I'm not a big fan of a change on any account either, though, since it's > absolutely not clear that @objc would have this side-effect. > >> On Jun 27, 2016, at 10:26 PM, Jordan Rose via swift-evolution >> <[email protected] <mailto:[email protected]>> wrote: >> >> Hey, all. An engineer at Apple noticed the following behavior: >> >> 1. class Foo: NSObject → exposed to Objective-C, Swift-style (mangled) >> runtime name >> 2. @objc class Foo: NSObject → exposed to Objective-C, Swift-style (mangled) >> runtime name >> 3. @objc(Foo) class Foo: NSObject → exposed to Objective-C, unmangled >> runtime name >> >> (and 4. @objc class Foo → illegal, classes must have ObjC heritage to be >> @objc.) >> >> They specifically observed that (1) and (2) have the same behavior, and >> suggested that maybe (2) should be shorthand for (3). >> >> Pros: >> - There aren't two ways to spell (1). >> - Removing the mangling (and module uniquing) from the runtime name is >> probably one of the most common uses of @objc on a class. >> >> Cons: >> - It's a source-breaking change, for all that the "@objc" in (2) is >> redundant. >> - For protocols, (1) and (2) are not equivalent, because @objc isn't >> inherited there. >> - Mangling is used to namespace class names at run time; if you drop that, >> the ObjC name should probably have a prefix. (This applies more to >> frameworks than apps, though.) >> >> There are probably people who say that last con applies to the generated >> header as well: we shouldn't put (1) or (2) into the generated header >> because the ObjC name might conflict with another class at compile time. >> This is valid, but probably too drastic a change at this point. >> >> So, what does everyone think? I'm leaning towards "no change" because it's a >> bit subtle and not a big enough win, but if there's widespread support for >> this I'll pull it into a proposal. >> >> Jordan >> >> P.S. This is rdar://problem/22296436 <rdar://problem/22296436> for anyone >> else at Apple. >> _______________________________________________ >> swift-evolution mailing list >> [email protected] <mailto:[email protected]> >> https://lists.swift.org/mailman/listinfo/swift-evolution >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
