gpt4 book ai didi

ios - 自定义 AppDelegate,添加 ViewController 属性,然后设置该属性 : unrecognized selector sent to instance 0x16574320

转载 作者:行者123 更新时间:2023-12-01 18:55:35 24 4
gpt4 key购买 nike

我不确定这是否是最好的架构,或者我是否会遇到麻烦,但我在 Objective-c 和 iOS 开发方面相当新,这是我第一次尝试使用委托(delegate)等。在我自己的架构中。

这是我的 AppDelegate 界面:

#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "XMPPStream.h"
#import "XMPPController.h"

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (strong, nonatomic) UIViewController *currentViewController;

//@property (strong, nonatomic) XMPPStream *xmppStream;
@property (strong, nonatomic) XMPPController *myXMPPController;

- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;


@end

可以看到,有一个 UIViewController 属性。

在另一个类中,我想访问和设置这个属性。

这是这个类的接口(interface):
#import <UIKit/UIKit.h>
#import "XMPPStream.h"

@interface SignInViewController : UIViewController <XMPPStreamDelegate>
@property (strong, nonatomic) IBOutlet UITextField *UserNameTextField;
@property (strong, nonatomic) IBOutlet UITextField *PassWordTextField;
//@property (strong, nonatomic) XMPPStream *myStream;
- (IBAction)SignInButtonPress:(UIButton *)sender;

@end

在方法 SignInButtonPress ,我想这样做(设置处理应用程序的 AppDelegate 实例的 UIViewController 属性):
- (IBAction)SignInButtonPress:(UIButton *)sender {

AppDelegate *myAppDel = (AppDelegate *) [[UIApplication sharedApplication]delegate];
myAppDel.currentViewController = self;

应用程序在该方法的第二行 ( myAppDel.currentViewController = self;) 崩溃,以下内容输出到控制台:

2014-12-13 16:55:23.744 myApp1919:60b] -[AppDelegate setCurrentViewController:]: unrecognized selector sent to instance 0x1653c010 2014-12-13 16:55:23.753 myApp[1919:60b] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AppDelegate setCurrentViewController:]: unrecognized selector sent to instance 0x1653c010' * First throw call stack: (0x305a6f83 0x3ad57ccf 0x305aa917 0x305a9203 0x304f8768 0x5fe97 0x32df9037 0x32df8fd7 0x32df8fb1 0x32de4717 0x32df8a2f 0x32df8701 0x32df36cb 0x32dc88cd 0x32dc6f77 0x3057220b 0x305716db 0x3056fecf 0x304daebf 0x304daca3 0x353e0663 0x32e2714d 0x7167d 0x3b264ab7) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb)



所以,我的问题是,为什么这不起作用?我只是遗漏了一些东西,比如向其中一个类添加协议(protocol)合规性,还是我遗漏了其他东西?还是这种架构一开始就存在令人难以置信的问题?

谢谢!

最好的祝福,

C

最佳答案

使用self.window.rootViewController = <any viewcontroller reference>;而不是 window.currentViewController。

没有这样的方法,currentViewController设置。

关于ios - 自定义 AppDelegate,添加 ViewController 属性,然后设置该属性 : unrecognized selector sent to instance 0x16574320,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27460786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com