Как получить доступ к значению переменной из одного класса, если переменная определена в другом? (Objective-C) - PullRequest
0 голосов
/ 25 марта 2010

У меня есть две пары (.m и .h) файлов. В разделе интерфейса я определил глобальную переменную BOOL. Мне нужно получить это значение в другом классе. Как мне это сделать? (Я не могу сделать один класс подклассом другого).

В одном файле у меня есть

@interface TabBarRotation : UITabBarController {
    BOOL portrait;
}

@end



@implementation TabBarRotation

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}

- (void):(UIInterfaceOrientation) interfaceOrientation  { 
if (interfaceOrientation == UIInterfaceOrientationPortrait||interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
    portrait=YES;
} 
else if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    portrait=NO;
} 
}

@end

А в чужой @implementation у меня

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if(portrait==YES) {
    CalcPortraitViewController *CalcPortraitController;
    CalcPortraitController = [[CalcPortraitViewController alloc] 
                 initWithNibName:@"CalcPortraitView" bundle:nil];
    CalcPortraitController.title=@"Калькулятор";
    CalcPortraitController.hidesBottomBarWhenPushed=YES;    
    [self.navigationController pushViewController:CalcPortraitController
                                     animated:NO];  
    [self.navigationController setNavigationBarHidden:YES animated:NO];
}
else if (portrait==NO) {
    CalcLandscapeViewController *CalcLandscapeController;
    CalcLandscapeController = [[CalcLandscapeViewController alloc] 
                              initWithNibName:@"CalcLandscapeView" bundle:nil];
    CalcLandscapeController.title=@"Калькулятор";
    CalcLandscapeController.hidesBottomBarWhenPushed=YES;    
    [self.navigationController pushViewController:CalcLandscapeController
                                         animated:NO];  
    [self.navigationController setNavigationBarHidden:YES animated:NO];
}

}

1 Ответ

0 голосов
/ 25 марта 2010

Если вы действительно хотите глобальную переменную, вы не хотите, чтобы она была в интерфейсе любого класса. Вы можете обращаться к глобальным переменным так же, как и в C. Используйте:

extern BOOL myGlobal;

для объявления переменной везде, где вам нужно ее использовать (или в общем заголовке может быть идеальным). Затем определите это точно в одном месте:

BOOL myGlobal;

И вы должны быть установлены.

Если вы хотите, чтобы она была переменной экземпляра класса, вы можете создать метод доступа, который вы обычно получаете для этой переменной из другого класса.

...