2

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

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

我在 .h 文件中的尝试:

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

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

预期的 ';' 在声明列表的末尾

我将如何使这成为可能?

谢谢

4

3 回答 3

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. 此外,一个更好的方法是声明一个属性,而不是声明一个实例变量。

于 2013-03-25T15:27:14.557 回答
0

在 .h 文件中:

@interface RandomViewController : UIViewController
{
    Class *c;
}

在 .m 文件中:

-(void)viewDidLoad
{
    c = [[Class alloc] init];
}
于 2013-03-25T14:37:23.487 回答
0

它的类方法是做什么的?如果返回无效:

类.h 文件:

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

随机视图控制器.h

@interface RandomViewController : UIViewController
    {
        Class *c;
    }

RandomViewController.m 文件

-(void)viewDidLoad
{
    c = [[Class alloc] init];  
    //call the method
    [c new];
}
于 2013-03-25T15:24:07.620 回答