Objective c NSObject类中的DismissViewController

Objective c NSObject类中的DismissViewController,objective-c,nsobject,dismiss,multipeer-connectivity,Objective C,Nsobject,Dismiss,Multipeer Connectivity,我创建了一个NSOBject类来处理MultipeerConnectivity,为此我使用以下代码: DeviceConnect.m MyViewController.m 除了委托方法browserViewControllerWasCancelled外,此代码工作正常。当我们单击browserVC类中现有的取消按钮时,为什么不调用此方法 现在,如果我在myViewController.m类中抛出这些代码,这个方法将恢复工作,但它会使代码变得非常混乱。您真的调用了函数DeviceConnect::

我创建了一个NSOBject类来处理MultipeerConnectivity,为此我使用以下代码:

DeviceConnect.m

MyViewController.m

除了委托方法browserViewControllerWasCancelled外,此代码工作正常。当我们单击browserVC类中现有的取消按钮时,为什么不调用此方法


现在,如果我在myViewController.m类中抛出这些代码,这个方法将恢复工作,但它会使代码变得非常混乱。

您真的调用了函数DeviceConnect::BrowserviewController吗

您应该将按钮Cancel touch inside event附加到某个函数,然后调用Disclose vc函数

也许下面的代码会对你有所帮助

m假设您已将“附加取消”按钮附加到此函数

-(IBAction)clickCancel:(id)sender
{
  [self.navigationController popViewControllerAnimated:NO];
}

我认为问题在于McBrowserveWController的代表正在被释放。您只需创建一个局部变量,然后显示附加到它的MCBrowserViewController。局部变量被释放,因为即使您正在显示MCBrowserViewController,也没有人对它有强引用

而不是

DeviceConnect *devices = [[DeviceConnect alloc] initConnectionWithDisplayName:[UIDevice currentDevice].name];
使设备成为属性或实例变量。然后不应释放它,MCBrowserViewController委托将正常工作

我希望这能解决你的问题

-(IBAction)clickCancel:(id)sender
{
  [self.navigationController popViewControllerAnimated:NO];
}
DeviceConnect *devices = [[DeviceConnect alloc] initConnectionWithDisplayName:[UIDevice currentDevice].name];