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];
}

最后,我在一个 C 方法中调用它,检查它是否等于 1。这是我得到错误的地方:

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 回答