• 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: EOCustomObject valueForKey avoiding infinite recursion
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: EOCustomObject valueForKey avoiding infinite recursion


  • Subject: Re: EOCustomObject valueForKey avoiding infinite recursion
  • From: Chuck Hill <email@hidden>
  • Date: Thu, 11 Sep 2014 21:54:21 +0000
  • Thread-topic: EOCustomObject valueForKey avoiding infinite recursion

That might not give you what you want.  committedSnapshot is set when the object is first mutated.  If you if the value is changed like:

null -> B -> null

Then this won’t log what is desired.

Chuck


On 2014-09-11, 12:28 PM, "Theodore Petrosky" wrote:

I have used the 

@Override
public void willUpdate() {

)    method

then I get the original value and compare it

if (committedSnapshotValueForKey(PROJECT_DESCRIPTION_KEY) != NSKeyValueCoding.NullValue) {
setOldPD((String)committedSnapshotValueForKey(PROJECT_DESCRIPTION_KEY));

}

and in your case check for == NSKeyValueCoding.NullValue

does that do what you want?

Ted


On Sep 11, 2014, at 3:20 PM, John Pollard <email@hidden> wrote:

Ray,

Thanks for the thought. I do want to log the stack trace but as I can't predict when this issue might happen and it is rare. I want to narrow down to the close circumstances first, or else I will be logging thousands of these stack traces in normal operation when there isn't a problem. What I need to do is detect when a given attribute is changed from non-null to null (which should never happen), so I need to check what it was before it is being set i.e. just check it was non-null before being set to null.

John

On 11 Sep 2014, at 18:05, Ray Kiddy <email@hidden> wrote:

On Thu, 11 Sep 2014 14:55:16 +0100
John Pollard <email@hidden> wrote:

Hi List,

In some debugging within takeValueForKey() I want to find out if the
key already has a value set. If I call valueForKey() or
storedValueForKey() and the value isn't already set I get infinite
recursion as it triggers a fault and tries to load with
takeValueForKey() and so on.

I am trying to debug where a value is being set to null, but
apparently not going via validateXXX() or setXXX() methods, so I want
to trap the case where the takeValueForKey() is passed null when the
key value was previously non-null and log a stack trace.

Thanks
John

One way to prevent the recursion you are talking about is to actually
look at the stack trace inside the method. Call the static method in
Wonder, ERXUtilities.stackTrace(), and look at what is in it. If you
find the method you are in, you have already been called.

Without Wonder, you can instantiate a Throwable and get the stack trace
from that.

Doing this is a smell. You do not want to leave this in your code. 

But since you are putting this in to find something, having this check
there temporarily can be useful.

- ray



_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: EOCustomObject valueForKey avoiding infinite recursion
      • From: John Pollard <email@hidden>
References: 
 >EOCustomObject valueForKey avoiding infinite recursion (From: John Pollard <email@hidden>)
 >Re: EOCustomObject valueForKey avoiding infinite recursion (From: Ray Kiddy <email@hidden>)
 >Re: EOCustomObject valueForKey avoiding infinite recursion (From: John Pollard <email@hidden>)
 >Re: EOCustomObject valueForKey avoiding infinite recursion (From: Theodore Petrosky <email@hidden>)

  • Prev by Date: Re: EOCustomObject valueForKey avoiding infinite recursion
  • Next by Date: Re: EOCustomObject valueForKey avoiding infinite recursion
  • Previous by thread: Re: EOCustomObject valueForKey avoiding infinite recursion
  • Next by thread: Re: EOCustomObject valueForKey avoiding infinite recursion
  • Index(es):
    • Date
    • Thread