Regards LM (From mobile)
> On Jun 28, 2016, at 8:04 PM, Douglas Gregor via swift-evolution > <[email protected]> wrote: > > >> On Jun 27, 2016, at 1:26 PM, Jordan Rose via swift-evolution >> <[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.) > > I’m -1 on this, because bare “@objc” in other contexts means “make sure this > is exposed to Objective-C, but I don’t want to be explicit about the name” > while “@objc(something)” means “make sure this is exposed to Objective-C, and > ‘something’ is the name”. > -1 Please'o'please ... I find it useful for complexifying simple swift names into the kind that typically exists on the objc side. > - Doug > > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
