• 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: Appropriate dealloc and finalize actions
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Appropriate dealloc and finalize actions


  • Subject: Re: Appropriate dealloc and finalize actions
  • From: Karolis Ramanauskas <email@hidden>
  • Date: Sun, 11 Oct 2009 21:44:43 -0500

>
> If you want to do something that doesn't break encapsulation, then you
> should simply release the one ivar connection.  That will let the receiving
> object perform its own actions, by itself, on its own behalf, as appropriate
> to its own affairs.


Thanks, however, I do not see how to accomplish my purpose. I'm confused.
Help ;)

I have object1 that has a connection to object2, (object1.connection =
object2). And at the same time object2.connection = object1:

O1 -----> O2
O2 -----> O1

If one of these objects gets deallocated how should I make sure the other
object is not pointing to the now deallocated object without doing what I
did:

- (void)dealloc {

if (self.connection) {

self.connection.connection = nil;

}

[super dealloc];

}

Thanks

On Sun, Oct 11, 2009 at 6:11 PM, Greg Guerin <email@hidden> wrote:

> Karolis Ramanauskas wrote:
>
>  - (void)dealloc {
>>
>>    if (self.connection) {
>>
>>        self.connection.connection = nil;
>>
>>    }
>>
>>    [super dealloc];
>> }
>>
>
>
> Why would you do this?  You're making one object responsible for the
> internals of another object.  This is a bad idea.  It breaks the individual
> encapsulation of each object.
>
> One of the cardinal points of good object-oriented design is that an
> object's responsibilities are circumscribed.  It should manage itself and
> the things it directly references, nothing else.  For any objects it DOES
> reference, each of those objects also has its own responsibilities, and so
> on recursively.  Objects shouldn't poke their noses into another object's
> business.
>
> If you want to do something that doesn't break encapsulation, then you
> should simply release the one ivar connection.  That will let the receiving
> object perform its own actions, by itself, on its own behalf, as appropriate
> to its own affairs.
>
>  -- GG
>
_______________________________________________

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: Appropriate dealloc and finalize actions
      • From: Kai BrĂ¼ning <email@hidden>
    • Re: Appropriate dealloc and finalize actions
      • From: Jens Alfke <email@hidden>
References: 
 >Re: Appropriate dealloc and finalize actions (From: Greg Guerin <email@hidden>)

  • Prev by Date: Re: Screensaver won't run on 10.6 even after porting to 64-bit
  • Next by Date: re: Screensaver won't run on 10.6 even after porting to 64-bit
  • Previous by thread: Re: Appropriate dealloc and finalize actions
  • Next by thread: Re: Appropriate dealloc and finalize actions
  • Index(es):
    • Date
    • Thread