изменить значение var в AppDelegate - PullRequest
3 голосов
/ 05 января 2012

В моем AppDelegate у меня есть

#import <UIKit/UIKit.h>
#import "CustomerProfile.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property   (strong, nonatomic) UIWindow *window;
@property   (strong, nonatomic) int x;

@end

В классе B я делаю

AppDelegate *appDelegate        =   [[UIApplication  sharedApplication] delegate];
appDelegate.x   =   5;

Затем в классе C я делаю

 AppDelegate *appDelegate        =   [[UIApplication  sharedApplication] delegate];
 appDelegate.x   =   4;

В конце, в классе DI выведите результат x и x = 5 .Должно быть х 4 .Это смущает меня.Пожалуйста, советуйте мне по этому вопросу.Спасибо

1 Ответ

6 голосов
/ 05 января 2012

В вашем методе делегата приложения ваше свойство x установлено в сильное (также известно как retain), вы должны установить для присваивания, int var не может быть сохранено, потому что это не объект:

@property (assign, nonatomic, readwrite) int x; //then @synthesize in the implementation

Во-вторых, вы должны импортировать заголовок вашего appDelegate (в ваших классах B, C, D)

#import "yourAppDelegate.h" 

установить свой экземпляр appDelegate:

yourAppDelegate *appDelegate = [[UIApplication sharedApplication]delegate]; // or [NSApplication sharedApplication] if your app it is for OS X

, а затем установить x var вжелаемое значение

appDelegate.x = 5 (or whatever)

Я проверил это в одном из моих проектов и работает.

...