В 10.6 Apple формализовала многие неофициальные протоколы делегатов и источников данных. Таким образом, неофициальный протокол, такой как
@interface NSObject (MyViewDataSource)
// data source methods
@end
стал
@protocol MyViewDataSource
//data source methods
@end
Преимущество заключается в том, что компилятор может выполнить некоторую проверку во время компиляции, чтобы предупредить вас, если вы передадите несовместимый экземпляр (т.е. не реализует NSTableViewDataSource
в качестве источника данных, например, NSTableView
и может вы, если вы не реализуете все необходимые методы протокола после объявления, что класс реализует протокол в его @interface
.
@protocol(NSTableViewDataSource)
не существовал до 10.6, поэтому вам придется объявить его, если вы хотите скомпилировать с SDK для предыдущих версий. Вы можете сделать это и передать свой объект источника данных (который теперь реализует фиктивный протокол) в качестве источника данных в предыдущих SDK, поскольку он также обязательно соответствует неофициальному протоколу, определенному в этих предыдущих версиях.