• 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: Best Practice for Returning Immutable Objects?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Best Practice for Returning Immutable Objects?


  • Subject: Re: Best Practice for Returning Immutable Objects?
  • From: Bob Warwick - Codehackers <email@hidden>
  • Date: Tue, 3 Jun 2008 13:17:59 -0300


On 3-Jun-08, at 12:56 PM, Karl Moskowski wrote:

I have a few methods that return NSData objects, but the objects are created and manipulated as NSMutableData, and then copied to an immutable version along these lines:
NSMutableData *myData = [NSMutableData data];
:
:
return [NSData dataWithData:myData];


Would it be sufficient to cast, like this?
	:
	return (NSData *)myData;

Does this generalize to other non-collection classes, e.g., NSString?


Hello -

	It depends if you actually want to return an immutable object or not.

When you call a method, the return type isn't a guarantee that the returned value will be a member of the specific class shown, but rather a member of or a subclass of the class shown. You can return that NSMutableData without casting it from a method which says it returns NSData and it's still technically valid.

For example, in these three classes only the first returns an NSData object, the other two return NSMutableData objects

- (NSData *) returnImmutableData {
	NSMutableData *someData = [NSMutableData data];
	return [NSData dataWithData:someData];
}

- (NSData *) returnSomeData {
	NSMutableData *someData = [NSMutableData data];
	return (NSData *)someData;
}

- (NSData *) returnSomeOtherData {
	NSMutableData *someOtherData = [NSMutableData data];
	return someOtherData;
}

In general, I'd say it's best to return what you're actually claiming to return.

-Bob Warwick
email@hidden
_______________________________________________

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: 
 >Best Practice for Returning Immutable Objects? (From: Karl Moskowski <email@hidden>)

  • Prev by Date: Re: Best Practice for Returning Immutable Objects?
  • Next by Date: Re: Best Practice for Returning Immutable Objects?
  • Previous by thread: Re: Best Practice for Returning Immutable Objects?
  • Next by thread: Re: Best Practice for Returning Immutable Objects?
  • Index(es):
    • Date
    • Thread