作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Xcode 的基于导航的应用程序创建一个新文件,我看到 .m 文件包含以下几行:
@interface RootViewController ()
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath;
@end
为什么在 .m 上声明而不是在 .h 本身上声明?
在头文件中只放一行(下面这一行)不是更容易吗?
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath;
我在其他代码中见过这种做法。我仍在学习 Objective-C,我想知道这是为什么。
谢谢。
最佳答案
通过不将其放入类的公共(public)接口(interface)中,您实质上将方法设为私有(private)(如果他们确实想要的话,它不会阻止您类之外的人调用它,但至少它会导致编译器警告)。
@interface RootViewController ()
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath;
@end
是一个类扩展(= 匿名类别;“正常”类别在 ()
之间有一个类别名称)。它的目的是声明私有(private)方法(否则,如果您尝试在 .m
文件中调用 configureCell:atIndexPath:
实现)。
您可以阅读有关类别和类扩展的更多信息 in the developer documentation
关于iPhone - 为什么有些方法是在 .m 上声明的,而不是在 .h 上声明的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432861/
我是一名优秀的程序员,十分优秀!