iOS - 在不导入类别 .h 文件的情况下向 NSObject 添加方法

iOS - adding a method to NSObject without importing the category .h file

想知道下面的情况能不能办到。我继承了一个iOS8的项目,我想给NSObject添加一个方法,让所有object都能看到。我已经这样做了。这是我创建的类别实现:

#import "NSObject+myCategory.h"

@implementation NSObject (myCategory)


-(void)localizeStringIncludeDefault{

    NSLog(@"about to localize String");
}

@end

现在我转到一个 MyViewController.m 示例并尝试调用该方法,但它不起作用它没有看到:

继承人.h:

    #import <UIKit/UIKit.h>


    @interface MyViewController : UIViewController {
        BOOL someFakeBoolean;
        IBOutlet UIView *someView;
        //etc
    }

    @property (nonatomic,assign) IBOutlet MyViewController *myViewController;
-(void)localizeStringIncludeDefault;

这里是实现 *.m 和我的问题:

@implementation MyViewController

- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self localizeStringIncludeDefault] //this call cant be done, the method is not visible
}

- (void) viewDidDisappear:(BOOL)animated
{
   //etc 
}

//etc

我的意思是我必须将 "NSObject+myCategory.h" 导入 MyViewController header 才能使用该类别,但因为我继承了这段代码,它已经有了一个基础.我不想进入每个 .h 文件并导入它。是扩展 object 以便每个 object class 都能看到我的方法的简单方法吗?

一个选项是将类别 .h 文件添加到 pch 文件。然后,您项目中的每个 class 都可以看到它,而无需显式导入它。

在您的 pch 文件中声明您的全局变量或声明,或者创建一个 Global.h 并将其导入您的 pch 文件中(对可重用性有很大帮助)。您也可以在 Global.h 中声明外部项目并在 App Delegate

中填充