• 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: odd problems with NSData / OpenGL
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: odd problems with NSData / OpenGL


  • Subject: Re: odd problems with NSData / OpenGL
  • From: Henri Häkkinen <email@hidden>
  • Date: Wed, 9 Dec 2009 01:52:28 +0200

On Dec 8, 2009, at 6:42 PM, David Duncan wrote:

> More than likely this is a memory management problem. Specifically, you probably aren't claiming ownership of the NSData object that you store in your instance variable, and thus it is being deallocated out from under you.

I was under the impression that automatic garbage collection was used in Mac OS X 10.5 and over, so retaining and releasing objects was handled automatically?

This is the initializer method of my Mesh class (I'm using OpenCTM library for importing triangle meshes):

- (id)initWithContentsOfFile:(NSString *)path
{
	self = [super init];
	if (self) {
		// Create an OpenCTM context and load the mesh from disk.
		CTMcontext context = ctmNewContext(CTM_IMPORT);
		ctmLoad(context, [path UTF8String]);

		// Check OpenCTM errors.
		CTMenum error = ctmGetError(context);
		if (error != CTM_NONE) {
			NSLog(@"OpenCTM error while opening %@: %s (%d)", path, ctmErrorString(error), error);
			ctmFreeContext(context);
			[self dealloc];
			return nil;
		}

		// Store the geometry arrays.
		_vertices = [NSData dataWithBytes:ctmGetFloatArray(context, CTM_VERTICES)
								   length:ctmGetInteger(context, CTM_VERTEX_COUNT) * sizeof(CTMfloat[3])];

		_indices = [NSData dataWithBytes:ctmGetIntegerArray(context, CTM_INDICES)
								  length:ctmGetInteger(context, CTM_TRIANGLE_COUNT) * sizeof(CTMuint[3])];

		// Calculate the bounding sphere radius.
		for (CTMuint i = 0; i < ctmGetInteger(context, CTM_VERTEX_COUNT) * 3; i += 3) {
			const CTMfloat x = ctmGetFloatArray(context, CTM_VERTICES)[i + 0];
			const CTMfloat y = ctmGetFloatArray(context, CTM_VERTICES)[i + 1];
			const CTMfloat z = ctmGetFloatArray(context, CTM_VERTICES)[i + 2];

			_radius = MAX(sqrt(x*x + y*y + z*z), _radius);
		}

		// Release the OpenCTM context.
		ctmFreeContext(context);
	}
	return self;
}


> --
> David Duncan
> Apple DTS Animation and Printing
>


Regards,
Henri Häkkinen

_______________________________________________

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

  • Follow-Ups:
    • Re: odd problems with NSData / OpenGL
      • From: "Sean McBride" <email@hidden>
    • Re: odd problems with NSData / OpenGL
      • From: Nick Zitzmann <email@hidden>
    • Re: odd problems with NSData / OpenGL
      • From: David Duncan <email@hidden>
References: 
 >odd problems with NSData / OpenGL (From: Henri Häkkinen <email@hidden>)
 >Re: odd problems with NSData / OpenGL (From: David Duncan <email@hidden>)

  • Prev by Date: Re: [iPhone] UINavigationController and UINavigationBar
  • Next by Date: Re: [iPhone] UINavigationController and UINavigationBar
  • Previous by thread: Re: odd problems with NSData / OpenGL
  • Next by thread: Re: odd problems with NSData / OpenGL
  • Index(es):
    • Date
    • Thread