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
中填充
想知道下面的情况能不能办到。我继承了一个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
中填充