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

时间:2015-03-30 23:18:16

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

我想知道是否可以完成以下情况。我继承了iOS 8的项目。我想为NSObject添加一个方法,以便所有对象都可以看到它。我已经这样做了。这是我创建的类别实现:

#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标头才能使用该类别,但因为我已经继承了这个代码,所以它已经有了一个基础。我不想进入每个.h文件并导入它。是一种扩展对象的简单方法,以便每个对象类都能看到我的方法吗?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

在你的pch文件中声明你的全局变量或声明,或者更确切地说是创建一个Global.h,然后在你的pch文件中导入它(在可重用性方面有很大帮助)。您也可以在Global.h中声明extern项目并填入App Delegate