Skip navigation.
 
mlRe: releasing NSKeyedUnarchiver causes crash
FROM : Jonathan Dann
DATE : Sun May 18 22:53:21 2008

On 18 May 2008, at 18:04, Markus Spoettl wrote:

> On May 18, 2008, at 5:25 AM, Klaus Backert wrote:

>>> - (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName 
>>> error:(NSError **)outError
>>> {
>>>  *outError = nil;
>>>  NSKeyedUnarchiver *archiver;
>>>  archiver = [[NSKeyedUnarchiver alloc] initForReadingWithData: 
>>> data];
>>>
>>>  // release current data
>>>  [tracks release];
>>>  tracks = [archiver decodeObjectForKey: @"myobject"];
>>>  [tracks retain];

>>


As tracks seems to be an ivar, it would likely be better practice to 
handle your memory management in an accessor, this way you never have 
to remember to write retain and release multiple times:

- (void)setTracks:(id)newTracks;
{
   if(tracks == newTracks)
       return;
   [tracks release];
   tracks = [newTracks retain];
}

you can the just call [self setTracks:newValue];

see here:

http://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAccessorMethods.html

To avoid writing accessors altogether, use Obj-C 2.0 properties.

http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_5_section_2.html#/
/apple_ref/doc/uid/TP30001163-CH17-SW13

Sorry if I've told you things you know already and there was another 
perfectly valid reason for doing what you did.

Jon

Related mailsAuthorDate
mlreleasing NSKeyedUnarchiver causes crash Markus Spoettl May 18, 09:51
mlreleasing NSKeyedUnarchiver causes crash Klaus Backert May 18, 14:25
mlRe: releasing NSKeyedUnarchiver causes crash Markus Spoettl May 18, 19:04
mlRe: releasing NSKeyedUnarchiver causes crash Jonathan Dann May 18, 22:53
mlRe: releasing NSKeyedUnarchiver causes crash Markus Spoettl May 19, 03:54