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 ([email protected])
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 [email protected]