__weak pointer collection firing prematurely???
__weak pointer collection firing prematurely???
- Subject: __weak pointer collection firing prematurely???
- From: Britt Durbrow <email@hidden>
- Date: Mon, 13 Aug 2012 00:04:33 -0700
I am looking at something very strange. I have a document object, that has an object that it owns; which has a __weak pointer back to the document object. Another object also has an indirect pointer to the document object. So, something like this:
@interface MyDoc : NSDocument
{
MySubObj *subObj;
}
@end
@interface MySubObj : NSDocument
{
@public
__weak MyDoc *doc;
}
@end
@interface SomeOtherObject : NSObject
{
MySubObj *subObj;
}
@end
During the execution of MyDoc's init method, an instance of MySubObj is created, and stored in the document's ivar. During MySubObj's init method, the __weak pointer back to the document object is set. This seems to work OK - I've traced it thru in the debugger. Then, an instance of SomeOtherObject is created, and it's subObj ivar is set. Again, works OK. The next thing SomeOtherObject does is to load a local variable with a reference to the document object, by copying it out of MySubObj's public __weak doc pointer.
OK, now the strange part: performing that copy causes the __weak doc ivar to get zeroed. I''ve watched it in the debugger; before executing that line of code, it's got the right value; after, it's nil. Changing __weak to __unsafe_unretained makes the problem go away.
This is the exact line of code in question:
TrDocument *document=(TrDocument *)__RPCPersistentInfo__pool->document;
The document object in question is, when this happens, still in the middle of it's init method when that __weak __RPCPersistentInfo__pool->document variable gets zeroed out.
Has anyone ever seen anything remotely like this? How and why is it happening on a *read*, of all places (I would have expected it to occur on a scope transition, where ARC would have possibly fired to do a release)? And do I need to worry about other places where I'm using __weak?
Oh, and this is on 10.8, with Xcode 4.4.1.
ANY insight would be much appreciated!
_______________________________________________
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