Objc - 扩展 - TableView 委托

Objc - Extension - TableView Delegate

我正在尝试在一个小型 objc 项目中遵循 Viper 模式。我得到每个部分的不同角色,没有特别的问题。 但是,我有问题的部分是当我尝试将我的 tableview 的 delegate/datasource 移动到另一个文件时,因为我读到这是应该如何完成的。 我跟着 post: 但我无法编译。

这里的问题是我不知道如何在 Objc 中进行扩展。我尝试了很多语法,但其中 none 行得通。 我如何(通过示例)在 VIPER“MyViewController.m/h”和“MyTableViewController.m/h”中正确使用,其中“MyTableViewController”是“MyViewController”的扩展? 这意味着我们会在“MyViewController.h”中看到 <UITableViewDelegate>

非常感谢您的帮助。这可能是一个多余的问题,但对于我的扩展问题,我没有找到明确的答案(如果有的话)。

感谢上面评论中的@Kamil.S,我设法在苹果文档中找到了我想要的东西! 实际上,Objc 中的扩展称为“类别”。我几乎做了我在原始问题中链接的 post 上写的内容。

如果有人需要,这里有一个简化的例子:

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
@property (strong, nonatomic) id<ViewToPresenterProtocol> presenter;
@end

ViewController.m

#import "ViewController.h"

@implementation ViewController
// All my code, ViewDidLoad, and so on
@end

CollectionViewController.h

#import <UIKit/UIKit.h>
#import "ViewController.h"

@interface ViewController (CollectionViewController) <UICollectionViewDelegate, UICollectionViewDataSource>
@end

CollectionViewController.m

#import <UIKit/UIKit.h>
#import "CollectionViewController.h"
#import "ViewController.h"

@implementation ViewController (CollectionViewController)

- (NSInteger)collectionView:(nonnull UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return [self.presenter getNumberOfItems];
}

// ...
// Here add others functions for CollectionView Delegate/Datasource protocols

@end