• 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: Local Properties
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Local Properties


  • Subject: Re: Local Properties
  • From: Andreas Grosam <email@hidden>
  • Date: Wed, 05 Sep 2012 09:09:11 +0200

On 04.09.2012, at 07:52, Graham Cox wrote:

>
> On 04/09/2012, at 3:24 PM, Gerriet M. Denkmann <email@hidden> wrote:
>
>> I have a class with a mutable array. But from outside it should be just a read-only non-mutable array.
>> Is there a better (more elegant) way?
>
> Just return the internal (mutable) array as an NSArray. By typing it as an NSArray, you have documented your intent - that the returned value is immutable.
>
> If a client of the code is caching this array, consider making THAT property a copy property.

Although this pattern is often applied for NSString properties, it's not a generally feasible solution.

Since virtually any immutable class has a mutable subclass, the receiver of an immutable property would have to always assume that the original object can possibly be changed under their feet at any time, and thus has to always make a copy.

Furthermore, this would require that the original owner of the property MUST NOT alter the underlaying object until after the receiver of the property has made a copy. Since we are increasingly utilizing concurrency in our code, this cannot be guaranteed.

So, IMO, if an object provides an immutable property of an underlaying mutable object, this object itself shall make the copy and return that.


The problem stems from the fact, that making a mutable class a subclass of an immutable class, is a flawed design.


Andreas
_______________________________________________

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: 
 >Local Properties (From: "Gerriet M. Denkmann" <email@hidden>)
 >Re: Local Properties (From: Graham Cox <email@hidden>)

  • Prev by Date: Re: How to Identify a "Phantom" Write Operation
  • Next by Date: Re: Sandboxing redux
  • Previous by thread: Re: Local Properties
  • Next by thread: [Moderator] Sandboxing die.die.die
  • Index(es):
    • Date
    • Thread