我想知道是否可以完成以下情况。我继承了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文件并导入它。是一种扩展对象的简单方法,以便每个对象类都能看到我的方法吗?
答案 0 :(得分:4)
一种选择是将类别.h文件添加到pch文件中。然后,您的项目中的每个类都将看到它,而无需显式导入它。
答案 1 :(得分:1)
在你的pch文件中声明你的全局变量或声明,或者更确切地说是创建一个Global.h,然后在你的pch文件中导入它(在可重用性方面有很大帮助)。您也可以在Global.h中声明extern项目并填入App Delegate