• 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: Simple memory problem
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Simple memory problem


  • Subject: Re: Simple memory problem
  • From: Bryan Henry <email@hidden>
  • Date: Fri, 06 Feb 2009 07:07:01 -0500

It sounds to me like you want to use garbage collection, not manual memory management.

Does C automatically free() memory when pointers get replaced? No, obviously not. Doing so would be silly, and its even more silly to want such behavior with Objective-C.

This:

inputString = [NSString string];
inputString = [inputString myMethod];

would crash once the local autorelease pool was emptied using the behavior you described. You can't just willy nilly release objects. If you reassign the pointer. Or, what about this:

inputString = [[NSString alloc] init];
someIvar = inputString;
inputString = [inputString myMethod];

Oops! someIvar now points to deallocated memory, and of course it doesn't point to the "new" inputString.

The behavior you propose suggests a very narrow and underdeveloped view on memory and memory management - there is no special connection between an object and the variables that are pointers to that object, and it seems to me that you think this on some level. Manual memory management is just that - manual - you don't want to compiler automatically releasing stuff for you.

Bryan

On Feb 6, 2009, at 5:24 AM, harry greenmonster wrote:

I cant help but think the preferable way Objective C should would is to send a release automatically to the receiver of a product of itself.

inputString = [inputString myMethod];

Its fairly clear in this situation that the original 'inputString' is not wanted and needs to die, and would seem like a more sensible way for the compiler to work as I struggle to think of a situation where the old value serves any perpose, being that it is now orphaned and useless.

Hence my confusion on the matter.


On 6 Feb 2009, at 03:17, Scott Ribe wrote:

So, how do I keep a copy hanging around AND kill the mysterious new
copy then (which shares the same name as the old one presumably)?

2 pointer variables...

--
Scott Ribe
email@hidden
http://www.killerbytes.com/
(303) 722-0567 voice



_______________________________________________

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

_______________________________________________

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: Simple memory problem
      • From: harry greenmonster <email@hidden>
References: 
 >Re: Simple memory problem (From: Scott Ribe <email@hidden>)
 >Re: Simple memory problem (From: harry greenmonster <email@hidden>)

  • Prev by Date: Re: control app with help iphone?
  • Next by Date: Re: Simple memory problem
  • Previous by thread: Re: Simple memory problem
  • Next by thread: Re: Simple memory problem
  • Index(es):
    • Date
    • Thread