jha*_*ott 3 iphone objective-c ipad
这对于一致的命名方法很有用,例如让我们看看UITableViewDataSource协议中的一些方法名称:
numberOfSectionsInTableView:
tableView:heightForHeaderInSection:
tableView:viewForHeaderInSection:
tableView:heightForFooterInSection:
tableView:viewForFooterInSection:
tableView:numberOfRowsInSection:
tableView:cellForRowAtIndexPath:
sectionIndexTitlesForTableView:
Run Code Online (Sandbox Code Playgroud)
注意第一个和最后一个是奇数 - 它们仍然将a UITableView*作为第一个参数,但因为它是唯一的参数,所以命名约定的一致性被破坏.如果它们可以这样命名会更好:
tableView:numberOfSections
tableView:sectionIndexTitles
Run Code Online (Sandbox Code Playgroud)
是否可以定义这样或类似的方法?我试过这些:
- (NSUInteger)specialView:(SpecialView*)specialView numberOfThingies;
- (NSUInteger)specialView:(SpecialView*)specialView numberOfThingies:(void)unused;
Run Code Online (Sandbox Code Playgroud)
第一个是理想的,但会导致头文件出错.第二个是不理想的(如果最后没有冒号会更好)但是它在标题中被接受,我无法弄清楚如何调用它.我尝试过各种变化:
[anObject specialView:aSpecialView numberOfThingies];
[anObject specialView:aSpecialView numberOfThingies:];
[anObject specialView:aSpecialView numberOfThingies:void];
[anObject specialView:aSpecialView numberOfThingies:(void)0];
Run Code Online (Sandbox Code Playgroud)
有办法做我想做的事吗?是否还有其他任何合理的命名约定,以保持这些方法的一致性?
简短回答:不,在当前版本的Objective-C中不可能.只有在根本没有参数的情况下,才能结束没有冒号和参数的方法; 否则,方法名称的任何部分必须后跟一个参数.
要做你想做的事,你必须遵循使用的模式UITableView.以下之一将是必要的:
- (NSUInteger)specialViewNumberOfThingies:(SpecialView *)specialView;
- (NSUInteger)numberOfThingiesInSpecialView:(SpecialView *)specialView;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |