Это не безопасный способ передачи информации между контроллерами. Если вы используете это в своем приложении, и оно работает, я на самом деле очень удивлен.
Правильный способ сделать это - передать требуемое значение от одного контроллера к другому. В приведенном ниже примере делегат приложения хранит значение, а затем каждый контроллер читает / записывает его ... это всего лишь пример, будьте осторожны с использованием делегата приложения в качестве хранилища для того, что фактически становится глобальными переменными 1004 *. Установка большого количества переменных в Application Delegate для использования таким образом усложнит обслуживание вашего приложения.
В вашем приложении Delegate.h
@interface AppDelegate : NSObject <UIApplicationDelegate> {
int sharedInt;
}
@property int sharedInt;
В вашем приложении Delegate.m
@synthesize sharedInt; // this will automatically create the getters and setters
Затем в контроллере, где вы хотите установить значение:
ApplicationDelegateClassNameHere * applicationDelegate = [[ UIApplication sharedApplication] delegate];
applicationDelegate.sharedInt = 3;
Затем в контроллере, где вы хотите прочитать значение:
ApplicationDelegateClassNameHere * applicationDelegate = [[ UIApplication sharedApplication] delegate];
if (applicationDelegate.sharedInt == 3) {
//do your stuff here
}
Отредактировано : забыли @ синтезировать.
Отредактировано : напечатано возвращение из метода одиночного делегата, основанного на предложении Кеннета Балленеггера, чтобы исключить предупреждения компилятора.