Pau*_*tin 18 delegates split coding-style objective-c ios
到目前为止我开发了一些应用程序.现在我正在写一个新的,在这个项目中我想保持代码非常干净,所以很容易找到方法.
我想从UIViewControllers开始,其视图具有UITableView作为子视图.我希望有一个文件名为DetailViewController所有直接属于它的函数.另一个名称DetailViewController+Protocols应该包含上面类的类别和UITableView的所有这些委托方法.
可以这样做吗?我想保持我的代码清洁并将其拆分为多个文件.
编辑
DetailViewController.h
@interface DetailViewController : UIViewController
... Some Properties
... Some Methods
@end
Run Code Online (Sandbox Code Playgroud)
DetailViewController.m
#import "DetailViewController.h"
@implementation DetailViewController
... Some Synthesizes
... Some Methods
@end
Run Code Online (Sandbox Code Playgroud)
DetailViewController + Protocols.h
@interface DetailViewController (Protocols) <UITableViewDelegate, UITableViewDataSource>
@end
Run Code Online (Sandbox Code Playgroud)
DetailViewController + Protocols.m
@implementation DetailViewController (Protocols)
- (NSINteger)numberOfSections
{
return ...;
}
- (NSInteger)numberOfRowsInSection:(NSInteger)section
{
if (section == 0)
return ...;
return ...;
}
...
@end
Run Code Online (Sandbox Code Playgroud)
但是,然后Xcode显示一些警告,一些委托方法没有在DetailViewController中实现.我还与导入试了一下DetailViewController + Protocols.h在DetailViewController.h.没有变化.
然后我试着忽略警告并看到:它有效!但为什么?没有这些警告,它不应该工作吗?
如果您只针对一个类使用它,则不必在不同的文件中创建完全独立的命名协议.事实上,你可能不应该因为它只是令人困惑.
如果你想保持你的主要类.h文件干净,只需移动它:
@interface DetailViewController (Protocols) <UITableViewDelegate, UITableViewDataSource>
@end
Run Code Online (Sandbox Code Playgroud)
进入@implementation上方的主.m文件
我不明白为什么你不想在你的.h中声明你的主类实现了tableview委托和数据源协议.它们是描述性的.
| 归档时间: |
|
| 查看次数: |
7111 次 |
| 最近记录: |