在我的iOS应用程序中,我有5个视图控制器,它们都处理相同的功能(组).可以在几种不同的配置中将这些视图控制器推到彼此之上.我创建了一个名为GroupViewHelper.h的文件,它使用@implementation为组功能提供一些功能.这些函数通过视图控制器堆栈查看,并向特定类型的视图控制器发送"刷新"消息.该文件如下所示:
@implementation UIViewController (GroupViewHelper)
- (void) refreshManageGroupsParent
{
// ...
}
- (void) refreshGroupDetailsParent
{
// ...
}
@end
Run Code Online (Sandbox Code Playgroud)
我的代码运行良好,一切都按预期运行,但我在构建时得到14个与此非常相似的警告:
ld: warning: instance method 'refreshGroupDetailsParent' in category from /Users/x/Library/Developer/Xcode/DerivedData/myapp-ayshzmsyeabbgqbbnbiixjhdmqgs/Build/Intermediates/myapp.build/Debug-iphonesimulator/myapp-dev.build/Objects-normal/i386/GroupMembersController.o conflicts with same method from another category
我想我得到的是因为我使用的是包含在多个地方的.H,但在这种情况下如何正确使用@implementation?
我想我得到的是因为我使用的是.H,它包含在多个地方
嗯,有点,但真正的问题是,你已经把@implementation
该在.h
文件中的第一个地方.如果您只将该.h
文件包含在一个位置,那么您就可以使用它 - 但它仍然不是正确的方法.
但在这种情况下如何正确使用@implementation?
把它放在一个名为GroupViewHelper.m
,并添加文件到你的项目的源代码,并把@interface
中GroupViewHelper.h
.
或者,理想情况下,打电话给他们UIViewController+GroupViewHelper.m
,并UIViewController+GroupViewHelper.h
,因为这是命名类文件的惯用方式.(如果你使用Xcode的"New File ..."菜单项来创建一个新的Objective-C类别文件,那就是它给你的东西.)
换句话说,现有类的类别的接口和实现与新类的接口和实现完全相同.
归档时间: |
|
查看次数: |
1624 次 |
最近记录: |