title: Does the system do a retain on object in performSelector:onThread:withObject:waitUntilDone: when no wait?
body: <p>Consider the following code - obviously non-ARC:</p>
  
  <pre><code>.  
  .  
  .  
  NSString* someValueToSend= [NSString alloc] initWithString@"Send me! Will I survive?"];  
  
  if([delegate respondsToSelector:@selector(giveMeYourString:)])  
  {  
    [delegate performSelector:@selector(giveMeYourString:) onThread:someOtherThread withObject:someValueToSend waitUntilDone:NO];  
  }  
  [someValueToSend release];  
  .  
  .  
  .  
  </code></pre>
  
  <p>Depending on what else is going on in the application, the delegate may or may not get around to running that selector before someValueToSend is released. Does the "system" do a "courtesy" retain on the object?</p>
  
  <p>If not, and I am in a situation where I cannot block, what is a good strategy for sending a value across the boundary without a leak? Autorelease?</p>
  
  <p>I did find a reference elsewhere that said the object is retained, but I have not seen that in the documentation....</p>
  
  <p>Any input appreciated.</p>