self.delegate=UITableView 中的self,有什么问题吗?

self.delegate=self in UITableView, what is wrong?

我的应用程序需要对 iPhone 和 iPad 通用。对于某些视图,iPhone 版本与 iPad 版本共享相同的视图(例如,表格视图)。所以为了更好的可重用性,我这样写我的表视图,并在 iPhone-controller 和 iPad-controller.

中使用它

.h

@interface NotificationView : UITableView
@end

.m

@interface NotificationView()<UITableViewDelegate,UITableViewDataSource>

@end
@implementation NotificationView

- (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style
{
    self = [super initWithFrame:frame style:style];
    if (self) {
        self.delegate = self;
        self.dataSource = self;
        self.rowHeight = 80;
        self.separatorStyle = UITableViewCellSeparatorStyleNone;
    }
    return self;
}

#pragma mark - UITableViewDataSource & UITableViewDelegate 

我觉得这样写不太对,但说不出为什么... 我已经搜索了一段时间,但没有得到任何有用的信息。所以,我的问题是:

如果有人能解释一下,在此先感谢。

只要您实现填充 table 所需的所有方法,它就可以正常工作。但它困扰你的原因是因为它设计不佳——它完全模糊了 MVC 设计中的所有界限。您的 tableView 是一个视图。它应该是愚蠢的,并且出于充分的理由,它使用委托来通过简单的适配器插入您拥有的任何模型对象。问问自己,我在 UITableView 的这个子类中是否有任何特定于视图(绘图、外观)的东西?如果不是那么为什么不做一个 tableViewController 或一个小的 NSObject 子类来填充 table? 最好。