有例子類:如何從Cocoa中的子類委託方法調用超類委託方法?
@interface OutlineViewController : NSOutlineView <NSOutlineViewDataSource, NSOutlineViewDelegate>
@end
@implementation OutlineViewController
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item
{
NSTableCellView *result = nil;
if (myCondition)
{
// ...
return result;
} else {
// how return defult?
}
}
@end
有來自委託方法調用可能實現默認?
不清楚爲什麼您會爲-respondsToSelector獲得額外的分數。如果這是一種重載方法,它將起作用。如果這不是一個重載的方法,爲什麼你會首先調用超級?這兩者都可以在「代碼作者」時間靜態確定。 – 2014-09-22 05:16:24
@JeffLaing NSOutlineViewDelegate協議中的方法都是可選的,所以我們不應該假設'super'採用委託協議,它必然會實現所討論的方法。也就是說,你的評論促使我更加關注這個問題 - 我沒有注意到在這種情況下超類是NSOutlineView本身。 – Caleb 2014-09-22 05:39:06
我得到錯誤:OutlineViewController.m:144:12:'NSOutlineView'沒有可見的@interface聲明選擇器'outlineView:heightOfRowByItem:' – abg 2014-09-22 06:00:36