如何检查UIViewController类是定义为SDK的一部分还是用户定义的?

时间:2018-05-30 10:28:25

标签: ios objective-c

有没有办法检查给定的UIViewController是用户定义的还是系统提供的?

//The following may be implemented in one of the View Controller lifecycle methods by swizzling
NSString *controllerName = NSStringFromClass([self class]);
if([Helper controllerIsUserDefined:controllerName]) {
     //Let us do this only for user-defined UIViewController classes
}

我正在寻找一种实现controllerIsUserDefined方法的方法。此外,我不喜欢向用户定义的ViewController类添加虚拟属性或方法,然后使用respondsToSelector进行检查,因为此功能也可能在现有项目中使用。

1 个答案:

答案 0 :(得分:2)

您可以检查主捆绑中是否定义了一个类,这可以解决您的问题。

if ([[NSBundle mainBundle] isEqual:[NSBundle bundleForClass:[self class]]]) {
    // Object class defined in the main bundle
}

如果在用户提供的框架中定义了类,则这可能不起作用。