全局类的实例

时间:2013-03-25 14:34:37

标签: iphone objective-c xcode

我试图在.m文件中的所有方法中创建一个类的实例。而不是在每个方法中都这样做:

-(void)viewDidLoad
{
    Class *c = [Class new];
}

我在.h文件中的尝试:

@interface RandomViewController : UIViewController
{
    Class *c [Class new];
}

但它不起作用,我收到错误

  

预期';'在声明清单的末尾

我如何才能做到这一点?

由于

3 个答案:

答案 0 :(得分:1)

创建一个实例变量,并在指定的初始值设定项中进行设置。这是一个示例@implementation块。

@implementation RandomViewController {
    // Instance variable names should start with an underscore, by convention.
    Class *_c;
}

...

// Designated initializer for UIViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        _c = [[Class alloc] init];
    }
    return self;
}

...

- (void)someMethodThatNeedsAClassInstance
{
    [_c doSomething];
}

如果您不使用ARC,则需要将[_c release]添加到dealloc实施中。

现在,在您班级的每个方法中,您可以参考_c并获取您在初始化程序中创建的实例。作为旁注,这不是一个真正的“全局”实例 - 它是每个对象。您创建的每个视图控制器都有自己的_c实例。另外,更好的方法是声明property而不是根本不用声明实例变量。

答案 1 :(得分:0)

在.h文件中:

@interface RandomViewController : UIViewController
{
    Class *c;
}

在.m文件中:

-(void)viewDidLoad
{
    c = [[Class alloc] init];
}

答案 2 :(得分:0)

该类方法做什么?如果返回void:

Class.h文件:

@interface Class: NSObject
{
}
- (void)new;

RandomViewController.h

@interface RandomViewController : UIViewController
    {
        Class *c;
    }

RandomViewController.m文件

-(void)viewDidLoad
{
    c = [[Class alloc] init];  
    //call the method
    [c new];
}