在使用类别拆分大类时,类别会抱怨未声明的选择器

时间:2014-06-05 21:17:59

标签: ios objective-c objective-c-category

我正在使用一个视图控制器,它具有长而不经常的视图设置方法。 为了清洁,此视图设置代码将移至一个类别,仅用于视图设置。

此类别引用原始视图控制器中的私有选择器,Xcode显示警告:Undeclared selector 'xyz:'

在我看来,我有这些选择,其中没有一个看起来很好:

  • 留下警告,EYES CLOSED!
  • 通过在头文件中声明公开公开私人选择器
  • 在原始VC头文件中声明第二个类别,作为我的第一个类别的子类别

我已经选择了最后一个选项,但我仍然有这样的感觉,就像我必须去便便一样。这里的最佳举措是什么?

1 个答案:

答案 0 :(得分:1)

您可以在类别实现

中向私有方法添加声明

所以在CustomViewController+ViewSetup.m

@interface CustomViewController (private)

// declare private methods and properties here which you know exist in CustomViewController.m

@end

总的来说,我认为你在做这个类别是不必要的。您可以清除原始文件中的代码,而不需要管理和维护类别文件。更不用说如果您更改任何这些私有方法签名并忘记在类别中更改它,编译器将不会警告您,当您尝试调用其中一种方法时,您将看到崩溃。