> On Aug 26, 2019, at 6:22 PM, Turtle Creek Software <supp...@turtlesoft.com> 
> wrote:
> 
> There are links between each Cocoa control class and its matching C++ control 
> (which also owns a native MFC control).  
> Also links between the view and our C++ controller, to load window layouts 
> and set up the control links.
> A couple utility links for showing progress bars, log window, etc.

Ah, OK. Your C++ code goes higher up the stack than I thought. (It sounds like 
using Qt would have been a good idea, but it's probably much too late to 
rethink that now.)

My suggestion is simply to compile all your C++ code as Objective-C++. In your 
project settings just tell Xcode to map the ".cpp" suffix to Objective-C++ 
instead of C++.

Then you can refer to Cocoa classes by their regular names in the C++ code, 
just as if you were writing Objective-C. ARC will automatically manage their 
reference-counting. If you have an NSButton* data member in a C++ class, the 
compiler will insert retain/release when it's assigned, and will add a -release 
call to your destructor. (Just make sure to initialize it to nil in its 
declaration!)

This way you aren't fooling the compiler, and it can do the right thing with 
reference-counts.

For x-plat compatibility, you can either #ifdef out the places those are 
referred to, or conditionally declare those class names as bogus C++ classes:

#ifndef __APPLE__
namespace cocoa {
        class NSButton;
        class NSWindow;
        …
}
#endif

—Jens
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to