D/Objective-C 64bit
Jacob Carlborg via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Wed Dec 31 03:18:33 PST 2014
On 2014-12-29 22:39, Christian Schneider wrote:
> I just report another finding here. It's about properties and NSStrings.
> So far, it was possible to set the strings of an alert like this (source
> copied from the Chocolat example):
>
> auto alert = new NSAlert ;
> alert.messageText = "Want Chocolate?" ;
> alert.informativeText = "Chocolate is sweet." ;
>
> This now needs to be written like this:
>
> auto alert = new NSAlert ;
> alert.setMessageText("Want Chocolate?") ;
> alert.setInformativeText("Chocolate is sweet.") ;
>
> In the NSAlert class, the respective code is:
>
> extern (Objective-C)
> class NSAlert : NSObject {
> @property {
> NSString messageText() ;
> void setMessageText(NSString text) @selector("setMessageText:") ;
>
> NSString informativeText() ;
> void setInformativeText(NSString text)
> @selector("setInformativeText:") ;
> }
> }
>
> Of course, the property read/write access style is again just a
> convenience, but for somebody coming from Objective-C, it is "natural"
> to do it either way.
It might be some issue with properties. I'll have to look into that as
well. D/Objective-C has some special treatment for properties. As a
workaround you do one of the following alternatives:
* Declare the method as "messageText" instead of "setMessageText"
* Add a alias for "setMessageText" to "messageText"
* Add a method, "messageText", that forwards to "setMessageText". Any D
method that takes one argument can be called like a setter
* Add an overload for "messageText" to take an argument as well
You might need to drop @property for some of these alternatives
--
/Jacob Carlborg
More information about the Digitalmars-d-announce
mailing list