[swift-evolution] [Idea] Make Boolean @objc properties reflect better into Objective-C

Radosław Pietruszewski radexpl at gmail.com
Wed Feb 24 10:45:00 CST 2016


Ah, didn’t realize this.

+1 then.

— Radek

> On 24 Feb 2016, at 17:31, Douglas Gregor <dgregor at apple.com> wrote:
> 
> 
>> On Feb 24, 2016, at 12:36 AM, Radosław Pietruszewski <radexpl at gmail.com <mailto:radexpl at gmail.com>> wrote:
>> 
>> Seems like an easy win, so I’m leaning towards a +1.
>> 
>> OTOH, are there any other cases where Swift -> ObjC automatically changes names of things to optimize for ObjC? If we don’t do more of that (the '"Add needless words" to Objective-C method names’ thread, or other quick wins like this one), it would be weird to make just this one exception, a single special case. I fear this would be more surprising than not changing anything at all.
> 
> We do a bunch of this already. We join the first argument label to the base name to form the first selector piece, inserting “with” if there’s no preposition in between already, and for throwing methods we either add “error:” in the appropriate place or append “AndReturnError” to the first selector piece if there are no other parameters.
> 
> 	- Doug
> 
> 
>> — Radek
>> 
>>> On 23 Feb 2016, at 22:00, Douglas Gregor via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>> 
>>> Hi all,
>>> 
>>> The Swift API guidelines state that Boolean properties should reflect assertions about the receiver, so in Swift one would expect:
>>> 
>>> 	class Foo {
>>> 	  var isEnabled: Bool // good
>>> 	}
>>> 
>>> rather than
>>> 
>>> 	class Foo {
>>> 	  var enabled: Bool // not Swifty
>>> 	}
>>> 
>>> When the property is @objc, e.g.,
>>> 
>>> 	class Foo : NSObject {
>>> 	  @objc var isEnabled: Bool
>>> 	}
>>> 
>>> The resulting Objective-C property doesn’t follow the Cocoa guidelines for Objective-C <https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingIvarsAndTypes.html#//apple_ref/doc/uid/20001284-BAJGIIJE>:
>>> 
>>> 	@property (readwrite,nonatomic) BOOL isEnabled;
>>> 
>>> because those guidelines state that properties do not use the “is” prefix.
>>> 
>>> My proposal is to strip the “is” prefix from the Objective-C name, but leave it off the getter, e.g.,
>>> 
>>> 	@property (readwrite,nonatomic,getter=isEnabled) BOOL enabled;
>>> 
>>> The change would have no effect on the Swift name; it will only affect the Objective-C property name and setter name.
>>> 
>>> Thoughts?
>>> 
>>> 	- Doug
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160224/77fefb94/attachment.html>


More information about the swift-evolution mailing list