2012-06-26 36 views
1

我想聲明一些整數值(用於控制我所做的複選框)。我宣佈他們都在.HIphone變量undedecalred

#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 

} 

然後在我他們都在viewDidLoad中設置爲「1」 .M

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

我該如何解決這個問題?

回答

1

C 函數無法訪問您的類的實例變量;只有目標C 方法做。

C函數可以訪問全局變量和在同一編譯單元聲明爲static變量,但如果你想給他們訪問實例變量,你需要從你的Objective C的方法明確地傳遞他們:

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

void fillBox(int *checkbox, int check1Yes) { 
    if(check1Yes == 1) 
     checkbox[0] = 1; 
    else 
     checkbox[0] = 0; 
} 
+0

工作就像一個魅力。我不知道它是這樣工作的。實例變量仍然變成綠色(就像我可以訪問它們),所以我認爲我可以用任何方法使用它們。謝謝! – MrHappyAsthma