• 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: Returning nil from -init
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Returning nil from -init


  • Subject: RE: Returning nil from -init
  • From: "Mondragon, Ian" <email@hidden>
  • Date: Wed, 12 Mar 2003 10:04:33 -0600

chris,

i would personally do something more along these lines to avoid this mess:

--- snip ---

// create a normal set method to handle the release/retain
// of your data ivar
- (void)setData:(NSData *)someData
{
[data autorelease];
data = [someData retain];
}

// create a lower level method to verify the NSData
// object according to your needs
- (BOOL)_parseData:(NSData *)someData
{
if (someData)
{
// return YES if things go well
}

return NO;
}

// have your object's -parseData method simply call
// _parseData: with it's data ivar
- (BOOL)parseData
{
return [self _parseData:instanceData];
}

// then you can verify the pdb argument before
// setting it as an ivar & not have to deal with it
- initWithData:(NSData *)pdb
{
if ((self = [super init]))
{
if ([self _parseData:pdb])
{
[self setData:pdb];

return YES;
}
}

return NO;
}

--- snip ---

- ian

> -----Original Message-----
> From: Chris Ridd [SMTP:email@hidden]
> Sent: Wednesday, March 12, 2003 3:19 AM
> To: Cocoa Development List
> Subject: Returning nil from -init
>
> I've got an init method that can fail if some of the input contains
> incorrect data, and I understand the correct approach is to return nil in
> this case. But it isn't clear to me what to do with the partial object
> pointed at by self in this case. Is calling dealloc or release
> appropriate?
>
> - (id)initWithData : (NSData *)pdb
> {
> if (self = [super init]) {
> data = pdb;
> [data retain];
> if ([self parseData] == NO ) {
> [self dealloc]; // or release?
> self = nil;
> }
> }
> return self;
> }
>
> My -dealloc method does a [data release], but I'm concerned that calling
> -dealloc myself is bad style. Can I rely on -release doing the right
> thing?
>
> Cheers,
>
> Chris
> _______________________________________________
> cocoa-dev mailing list | email@hidden
> Help/Unsubscribe/Archives:
> http://www.lists.apple.com/mailman/listinfo/cocoa-dev
> Do not post admin requests to the list. They will be ignored.
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.

  • Prev by Date: Getting the amount of free space on a volume
  • Next by Date: Re: I want ALL my tiff pixels
  • Previous by thread: Re: Returning nil from -init
  • Next by thread: Re: Returning nil from -init
  • Index(es):
    • Date
    • Thread