title: populating a tableview confusion
body: <p>Using cocoa on mac osx 10.7 I populated a TableView with some rows, I have some confusions, </p>
  
  <p>names is an NSArray* containing NSString*</p>
  
  <pre><code>- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex;
  {
    return [names objectAtIndex:rowIndex];
  }
  </code></pre>
  
  <p>I checked the protocol reference for the datasource in the apple's documentation</p>
  
  <p><a href="https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Protocols/NSTableDataSource_Protocol/Reference/Reference.html" rel="nofollow">https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Protocols/NSTableDataSource_Protocol/Reference/Reference.html</a></p>
  
  <p>I am returning an NSString* in the above function,  the signature of the method only returns id and not NSString* . The documentation gave me no clue about the return type it just says</p>
  
  <pre><code> An item in the data source in the specified tableColumn of the view.
  </code></pre>
  
  <p>My case was simple NSString* made sense and it worked but I am not sure. I am wondering where is this implicit knowledge coming from as to what type of data has to be returned by this method given there is no mention in the signature and nothing in the method's documentation :/</p>
  
  <p>Any advise ? I am coming from .Net/android/ background the documentations there made more sense probably because those are strongly typed lanuguages ,...</p>