I ran into a usage pattern that seems common.  In Interface Builder define an NSTableView and an NSArrayController.  Set the NSArrayController as the outlet for the NSTableView&#39;s dataSource and delegate.  Then specify the NSArrayController to be a custom class.<div>
<br></div><div>The issue is that we of course cannot do this:</div><div><br></div><div>class CustomArrayController : NSArrayController, NSTableViewDataSource, NSTableViewDelegate</div><div><br></div><div>One solution is to manually add the NSTableViewDataSource/Delegate methods like this to the NSArrayController.</div>
<div><br></div><div>                [Export (&quot;tableView:objectValueForTableColumn:row:&quot;)]</div><div>                NSObject GetObjectValue (NSTableView tableView, NSTableColumn tableColumn, int row)</div><div><br>
</div><div><br></div><div>Another solution is to manually set the dataSource on the NSTableView.  tableView.DataSource = new CustomTableViewDataSource(customArrayController).</div><div><br></div><div>In the first solution, who wants to remember or lookup the export decoration?</div>
<div>In the second solution, that defeats one of the main features of IB.</div><div><br></div><div>I do think this usage pattern extends beyond this example.  You can set the dataSource/delegate to be the File&#39;s Owner, etc.  One of the benefits of Cocoa is that any object can implement a selector.  MM solves this with the Export but again you have to know the selector.  Providing a means to easily add the selectors for a given protocol to a class would be very ideal.</div>
<div><br></div><div>Duane</div>