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、初期化子で作成したインスタンスを参照して取得できます。ちなみに、これは実際には「グローバル」インスタンスではなく、オブジェクトごとです。作成する個々のViewControllerには、独自ののインスタンスがあり_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

クラスメソッドは何をしますか?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];
}
于 2013-03-25T15:24:07.620 に答える