0

から値を読み書きしようとしていますAppDelegate。私は例外を持ってしまう

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AppDelegate myViewDelegate]: unrecognized selector sent to instance 0xc07a9b0'

APPDelegate.h

@interface AppDelegate : NSObject <UIApplicationDelegate> {
    MyView *myViewDelegate;
}
@property (nonatomic,strong) MyView *myViewDelegate;

APPDelegate.m

- (void) _application:(UIApplication *)application commonInitializationLaunching:(NSDictionary *)launchOptions{
...
    self.myViewDelegate = [[MyView alloc] init];

}

MyView.h 私はNSDate *d;

@property(nonatomic,strong) NSDate *d;

そして@synthesis d;_MyView.m


PaymentView.m

- (void) loadView{
    [super loadView];
     AppDelegate *del=(AppDelegate *)[[UIApplication sharedApplication] delegate];
     del.myViewDelegate.d = myDate;// myDate is a NSDate
}
4

2 に答える 2

0

最新の Xcode から自動 @synthesize を使用していないと仮定して、これを AppDelegate.m に追加します。

@synthesize myViewDelegate;

また、それを削除します-プロパティ+合成がある場合、それは必要ありません:

MyView *myViewDelegate;
于 2013-10-02T11:49:32.830 に答える
0

通常、AppDelegate の親クラスは UIResponder.. なので、これを呼び出すと、

 AppDelegate *del=(AppDelegate *)[[UIApplication sharedApplication] delegate];

返されるデリゲートはクラスではありません...返されたオブジェクトで myViewDelegate を呼び出そうとすると、そのプロパティがありません。ソース コードで main.m クラスを見つけ、AppDelegate クラスが次の行のように渡されていることを確認します。

 return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

その AppDelegate クラスが実際にあなたのクラスであり、クラス名を cmd + クリックすると、そのクラス ソースに移動するはずです。

于 2013-10-02T13:02:28.827 に答える