有没有办法在访问特定属性时生成编译器警告?

时间:2012-11-06 16:18:22

标签: objective-c xcode cocoa

示例是我想在每次访问属性-[UIViewController navigationController]时生成警告。

对于好奇,原因是我使用的是自定义导航控制器,并希望在我(或项目中的其他开发人员)尝试访问此属性时收到警告。

2 个答案:

答案 0 :(得分:2)

唯一想到的是子类UIViewController,只使用自定义子类作为项目中其他视图控制器的基础。这样,您可以覆盖该方法并使用#warning来让预处理器发出诊断信息。 (如下所述,#warning实际上不会工作。相反,您需要在重写方法中编写代码以生成您认为合适的诊断。)也许您的自定义导航控制器可以检查它的内容控制器属于正确的基类。

绕过这是一个微不足道的演员,但是,如果要防止意外使用,它可能有一些价值。

答案 1 :(得分:2)

您可以创建自定义getter并将其声明为deprecated:

- (UINavigationController*)navigationController __attribute__ ((deprecated))
{
    // do something
}

这种方式只有当有人试图打电话给这个吸气剂时,他才会收到警告。