1

いくつかの整数値を宣言しようとしています (作成したチェックボックスを制御するために使用されます)。それらをすべて.hで宣言します

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITextFieldDelegate> {

    int check1Yes; //There are more but this one causes the same error so I show one for example

}

次に、.m で、viewDidLoad でそれらをすべて「1」に設定します

- (void)viewDidLoad {

check1Yes = 1;

[super viewDidLoad];
}

最後に、それが 1 に等しいかどうかを確認する C メソッドで呼び出します。ここでエラーが発生します。

void fillBox(int *checkbox)
{

    if(check1Yes == 1) //ERROR on this line
        checkbox[0] = 1;
    else 
        checkbox[0] = 0;
}

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

C関数は、クラスのインスタンス変数にアクセスできません。Objective Cメソッドのみが行います。

C 関数は、同じコンパイル ユニットで宣言されたグローバル変数と静的変数にアクセスできますが、インスタンス変数へのアクセスを許可する場合は、Objective C メソッドから明示的に渡す必要があります。

-(void)doSomethig {
    fillBox(&myCheckbox, check1Yes);
}

void fillBox(int *checkbox, int check1Yes) {
    if(check1Yes == 1)
        checkbox[0] = 1;
    else 
        checkbox[0] = 0;
}
于 2012-06-26T19:54:50.967 に答える