• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Cocoa Classes from C++?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cocoa Classes from C++?


  • Subject: Re: Cocoa Classes from C++?
  • From: Fritz Anderson <email@hidden>
  • Date: Wed, 28 May 2008 10:00:48 -0500

In response to Jens Alfke's suggestion of:

// MyObjCClass.h

#ifdef __cplusplus
class MyCppClass;
#else
typedef struct MyCppClass MyCppClass;
#endif

@interface MyObjCClass {
	@private
	MyCppClass *cppObject;
}
....
@end


On 28 May 2008, at 12:14 AM, Bill Bumgarner wrote:

On May 27, 2008, at 9:09 PM, Jens Alfke wrote:
On 27 May '08, at 8:59 PM, Bill Bumgarner wrote:
In this case, it will change the way that GC handles the pointer, depending on how the class is compiled. GC is aware of the layout of objects and will scan only the fields that are marked __strong or are of an Objective-C object reference type.
But the pointer that's being lied about here is to a C++ object, which the collector should be ignoring anyway, right?

Unless you were to compile the class such that the objective-c world sees it as an Objective-C object pointer... Then it would be scanned as if it were rooted in the GC world and, potentially, bad things could happen.

Jens is probably wise by now, but I am still confused (I think I have a block on the nuances of GC). In the sample code, cppObject is either a pointer to a C++ object, or a pointer to an anonymous struct, depending on whether the header is #included by an .mm or .m file.


Neither pointer seems to be to an Objective-C object. How then do your strictures on crossing ObjC objects with struct pointers apply here?

I get the problem with disguising an ObjC pointer as a void* or struct*. I hadn't thought of that, and am grateful to learn of it.

Related: Has alternative documentation emerged on GC, so I can get over my block?

	— F

_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:
This email sent to email@hidden


References: 
 >Cocoa Classes from C++? (From: "J. Todd Slack" <email@hidden>)
 >Re: Cocoa Classes from C++? (From: Andrew Farmer <email@hidden>)
 >Re: Cocoa Classes from C++? (From: Jens Alfke <email@hidden>)
 >Re: Cocoa Classes from C++? (From: Todd Heberlein <email@hidden>)
 >Re: Cocoa Classes from C++? (From: Jens Alfke <email@hidden>)
 >Re: Cocoa Classes from C++? (From: Bill Bumgarner <email@hidden>)
 >Re: Cocoa Classes from C++? (From: Jens Alfke <email@hidden>)
 >Re: Cocoa Classes from C++? (From: Bill Bumgarner <email@hidden>)

  • Prev by Date: Re: if statement
  • Next by Date: Re: email
  • Previous by thread: Re: Cocoa Classes from C++?
  • Next by thread: Re: Cocoa Classes from C++?
  • Index(es):
    • Date
    • Thread