gpt4 book ai didi

ios - 将 NSObject 设置为 nil 会挂起我的应用程序

转载 作者:行者123 更新时间:2023-11-29 10:41:18 24 4
gpt4 key购买 nike

当用户按下取消按钮时,我试图从一个 View Controller 转换到另一个 View Controller 。在调用 dismissViewController 之前,我将另一个对象设置为 nil。

这个对象是一个管理器,控制着一个多点连接和与之关联的状态。当我将其设置为 nil 时:_appDelegate.manager = nil; 应用程序挂起大约 5 秒钟,然后再次运行。我使用了探查器,但 cpu 或内存中没有真正发生任何事情。我真的很困惑。有没有可能和multipeer使用其他线程有关?

如果有帮助,这是 ConnectionManager 的头文件。

@interface ConnectionManager : NSObject <MCSessionDelegate, MCNearbyServiceBrowserDelegate, MCNearbyServiceAdvertiserDelegate>

@property (nonatomic, strong) MCPeerID *peerID;
@property (nonatomic, strong) MCNearbyServiceBrowser *browser;
@property (nonatomic, strong) MCNearbyServiceAdvertiser *advertiser;
@property (nonatomic, strong) MCSession *session;
@property (nonatomic, strong) NSMutableDictionary *sessions;
@property (nonatomic, assign) BOOL leader;
@property (nonatomic, strong) NSMutableArray *currentRequestingPeers;
@property (nonatomic, strong) NSMutableDictionary *allMessages;
@property (nonatomic, strong) NSString *userID;
@property (nonatomic, strong) NSData *leadersPublicKey;
@property (nonatomic, strong) NSString *password;
@property (nonatomic, strong) NSString *nameOfProtest;
@property (nonatomic, strong) NSMutableDictionary *foundProtests;

- (void)joinProtest:(NSString*)protestName password:(NSString*)password;
- (void)startProtest:(NSString*)name password:(NSString*)password;
- (void)pruneTree;
- (void)sendMessage:(NSString*)message;
- (void)searchForProtests;
- (void)reset;
- (void)testMessageSending;

@end

最佳答案

这是一个通用的调试提示(作为答案发布,因为它不能用作评论)。

我的猜测是,关闭程序的某些部分正在等待网络响应,如果没有响应,5 秒后超时。如果幸运的话,会涉及到您的部分代码,您会认为这是在等待网络事件。

要找出答案,请使用调试器运行应用程序。当应用程序挂起时,请按暂停按钮。然后打开调试导航器,检查每个线程的状态。具体来说,单击每一行用户代码(带有蓝色图标),然后查看您的代码在每个线程中执行的操作。

enter image description here

关于ios - 将 NSObject 设置为 nil 会挂起我的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24461278/

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