> On Aug 26, 2019, at 6:22 PM, Turtle Creek Software <[email protected]>
> 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 ([email protected])
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 [email protected]