【问题标题】:iOS - adding a method to NSObject without importing the category .h fileiOS - 在不导入类别 .h 文件的情况下向 NSObject 添加方法
【发布时间】:2015-03-30 23:18:15
【问题描述】:

我想知道以下情况是否可以做到。我继承了一个 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 文件并导入它。是一种扩展对象的简单方法,以便每个对象类都能看到我的方法吗?

【问题讨论】:

  • 不确定是否需要@property (nonatomic,assign) IBOutlet MyViewController *myViewController;

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


【解决方案1】:

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

【讨论】:

  • 完美,这正是我想要的。我在前缀头文件中使用了类别 .h 文件,现在所有对象都可以看到我的方法。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 2015-09-13
    • 2021-12-04
    • 1970-01-01
    • 2018-08-01
    相关资源
    最近更新 更多