данные между представлениями UIApplication - PullRequest
0 голосов
/ 23 марта 2011

Я хочу обмениваться данными между представлениями ...

У меня есть приложение с вкладкой приложения:

myappdelegate.h

#import <UIKit/UIKit.h>

@interface myappdelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
    UIWindow *window;
    UITabBarController *tabBarController;
    NSString  *result;
}


@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;

@property (copy , readwrite) NSString *result;


@end

если я хочу позвонить с помощью этой команды, есть подсказка: «может не отвечать» ....

   myappdelegate *dataCenter = [(myappdelegate *)[UIApplication sharedApplication] delegate];  <<may not respond
   dataCenter.result = @"msg";

result_view *resultView = [[result_view alloc] initWithNibName:@"result_view" bundle:nil];
[self.navigationController pushViewController:resultView animated:YES];
[resultView release];

result_view.m

- (void)viewDidLoad
{
    myappdelegate *dataCenter = (myappdelegate*)[[UIApplication sharedApplication]delegate];

    [label setText:dataCenter.result];
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

программа вылетает ...

Ответы [ 2 ]

0 голосов
/ 23 марта 2011

Ваша первая строка должна быть

myappdelegate *dataCenter = (myappdelegate *)[[UIApplication sharedApplication] delegate];

Что касается второй строки, я не могу сказать, чего вы ожидаете.У вас нет свойства result_array в вашем классе myappdelegate, поэтому, конечно, вы не можете установить это свойство.

Если вы пытались установить свойство result, вы должны были написать

dataCenter.result = @"msg";
0 голосов
/ 23 марта 2011

Ваш код говорит, что sharedApplication относится к классу myappdelegate, который действительно не отвечает на delegate.Сделайте это:

(myappdelegate *)[[UIApplication sharedApplication] delegate];

, чтобы удалить предупреждение.


Из-за обмена сообщениями во время выполнения Objective C ваш текущий (генерирующий предупреждение) код не приведет к сбою приложения.Авария лежит где-то еще.

...