HEllo Corbin, 
It seem its fixed, I didn't realize an ivar in the Custom NSCell, I forgot I 
put it there thinking in using it to hold the name of the user and be able to 
sort the table, which right now I can;t tell how to do it, I took out that 
ivar, and it hasn't crash so far.. still Im gonna keep trying to make it crash 
and if it happens, then I will do what you suggested.

Thanks for the help and the blog link.. I learned a something else I wished to 
know but didn't know where to find it. 

Gustavo

On Feb 18, 2010, at 5:06 PM, Corbin Dunn wrote:

> 
> On Feb 18, 2010, at 12:24 AM, Gustavo Pizano wrote:
> 
>> 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:]
> 
> There should be a free event at some point; make sure you check the option to 
> keep track of all retain/releases -- look for the last release. That 
> callstack is the last person who "owned" the object had it, and released it. 
> Based on that information, you need to some how ensure it is retained longer 
> than that time period.
> 
> corbin
> 
> 
>> 
>> 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 (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to