Apple's Developer Reference mentions that a an object is deallocated if there are no strong reference to it. Can this happen if an instance method called from a weak reference is in the middle of execution?
For example, consider the below snippet -
@interface ExampleObject
- doSomething;
@end
@interface StrongCaller
@property ExampleObject *strong;
@end
@implementation StrongCaller
- initWithExampleInstance:(ExampleObject *) example
{
    _strong = example;
}
- doSomething
{
    ....
    [strong doSomething];
    ....
    strong = nil;
    ....
}
@end
@interface WeakCaller
@property (weak) ExampleObject *weak;
@end 
@implementation WeakCaller
- initWithExampleInstance:(ExampleObject *) example
{
    _weak = example;
}    
- doSomething
{
    ....
    [weak doSomething];
    ....
}
@end
Now, In main thread,
ExampleObject *object = [[ExampleObject alloc] init];
In Thread 1,
[[StrongCaller initWithExampleInstance:object] doSomething];
In Thread2,
[[WeakCaller initWithExampleInstance:object] doSomething];
Assuming that the main thread no longer holds a reference to object, what would happen if strong is set to nil, when [weak doSomething] is executing? Is the object GC'ed in this case?