• 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: “EXC_BAD_ACCESS” on Custom TableView with custom NSCell when clicking.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: “EXC_BAD_ACCESS” on Custom TableView with custom NSCell when clicking.


  • Subject: Re: “EXC_BAD_ACCESS” on Custom TableView with custom NSCell when clicking.
  • From: Gustavo Pizano <email@hidden>
  • Date: Thu, 18 Feb 2010 09:24:52 +0100

Hello Corbin.

ok, so I read your blog post, its great, I love it.

I followed what you said there with my application, when the app crashes I see the address, I search for it and I see only one result, so I click the arrow  next to the address to check the history and I have this situation.
first I have a Malloc, responsible CoreData, responsible caller [NSSQLCore _prepareResultsFromResultSet:usingFetchPlan:withMatchingRows:],
and right after that event I have the Zombie. responsible CoreData, Responsible caller [NSManageObject objectDictionaryWithValuesForKeys:]

So when I click the zombie and check the extended view, the last line of code that I have control over is the accessor for the userDictionary attribute in the User ManagedObject, which has these lines of code.

-(NSDictionary *)userDictionary{
	return [self dictionaryWithValuesForKeys:[NSArray arrayWithObjects:@"firstName",@"lastName",@"avatar",@"title",nil]];
}

I also have this line of code in the User ManageDObject
+(NSSet *)keyPathsForValuesAffectingUserDictionary{
	return [NSSet setWithObjects:@"firstName",@"lastName",@"avatar",@"title",nil];
}
dunno if this affects in somehow.. I stilld on't get what for is it, i think its to track changes of the object for those keys.

So, if I have comming back to the initial quesiton, if I have no ivars in the cusotm NSCell, Im just drawing the values in the values like this

-(void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView{

	NSDictionary * cellValues = [self objectValue];
	NSString * firstName = [cellValues valueForKey:@"firstName"];
	NSString * lastName = [cellValues valueForKey:@"lastName"];
....
...
}
then what am I doing wrong?

thx.
Gustavo


On Feb 17, 2010, at 11:31 PM, Corbin Dunn wrote:

>
> On Feb 17, 2010, at 2:14 PM, Gustavo Pizano wrote:
>
>>
>> On Feb 17, 2010, at 11:03 PM, Jim Correia wrote:
>>
>>> On Feb 17, 2010, at 4:41 PM, Gustavo Pizano wrote:
>>>
>>>> Maybe I misunderstood I must conform NSCopying protocol also even when using core data?
>>>
>>> If you have an NSCell subclass which adds iVars, you must implement -copyWithZone: to do correct memory management.
>>>
>>> Your -copyWithZone: needs to work correctly within the bounds of the object ownership rules.
>>>
>>> If you have an object iVar which shouldn’t be copied, but is still an owned reference, then you can (and must) retain it instead in the copy.
>>>
>>> (You should do this for all cells with iVars, not just ones with object iVars, so that your subclass will behave correctly in the future even if NSCell doesn’t implement its behavior using NSCopyObject.)
>>>
>>> - Jim
>>
>> Hello Jim
>> HMM digging more into the problem.. definitely it seems because Im not copying properly the NSManagedObject Paul Robinson says in one old post:
>>
>> "The short answer is that you need to override the setObjectValue: method (which tries to copy your uncopyable NSManagedObject) in your custom NSCell to convert your NSManagedObject into an NSValue (which is copyable)."
>>
>>
>> And taking what you said,  so if my User ManagedObject returns me the NSDictionary with the key-value of its attributes, then in the cell I must set it as an ivar within the method setObjectValue, then implement the copyWithZone and return the copy of it isn't it? right now I don't have any ivar in my custom cell.. sooo .  := :S.
>
> I think Jim and I are leading you off track; if your cell has no extra ivars, then you don't have to worry about the cell implementing copyWithZone:.
>
> I still think you should read my blog posting and see why the crash happens with zombies on.
>
> corbin

_______________________________________________

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: “EXC_BAD_ACCESS” on Custom TableView with custom NSCell when clicking.
      • From: Corbin Dunn <email@hidden>
References: 
 >“EXC_BAD_ACCESS” on Custom TableView with custom NSCell when clicking. (From: Gustavo Pizano <email@hidden>)
 >Re: “EXC_BAD_ACCESS” on Custom TableView with custom NSCell when clicking. (From: Corbin Dunn <email@hidden>)
 >Re: “EXC_BAD_ACCESS” on Custom TableView with custom NSCell when clicking. (From: Gustavo Pizano <email@hidden>)
 >Re: “EXC_BAD_ACCESS” on Custom TableView with custom NSCell when clicking. (From: Jim Correia <email@hidden>)
 >Re: “EXC_BAD_ACCESS” on Custom TableView with custom NSCell when clicking. (From: Gustavo Pizano <email@hidden>)
 >Re: “EXC_BAD_ACCESS” on Custom TableView with custom NSCell when clicking. (From: Corbin Dunn <email@hidden>)

  • Prev by Date: Re: “EXC_BAD_ACCESS” on Custom TableView with custom NSCell when clicking.
  • Next by Date: Re : Proper way to initialize application support file
  • Previous by thread: Re: “EXC_BAD_ACCESS” on Custom TableView with custom NSCell when clicking.
  • Next by thread: Re: “EXC_BAD_ACCESS” on Custom TableView with custom NSCell when clicking.
  • Index(es):
    • Date
    • Thread