Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在不创建新实例的情况下访问另一个类中的数据_Iphone_Ios_Xcode_Ipad - Fatal编程技术网

Iphone 在不创建新实例的情况下访问另一个类中的数据

Iphone 在不创建新实例的情况下访问另一个类中的数据,iphone,ios,xcode,ipad,Iphone,Ios,Xcode,Ipad,我有一个问题,因为两天来研究了更多我无法解决的问题 我在一个班级里有一个应用程序运行流式音频。在另一个视图中,我有一个包含播客的表,这些播客将通过url打开 为了利用第一个类的代码创建了一个委托,因此当用户在任何音频播客中播放时,我使用主类的方法来更改参数(在本例中为URL) 委托工作正常,参数的传递也正常。唯一的问题是委托必须实例化主类 ClassePrincipal *classePrincipal = [[ClassePrincipal alloc] init]; classePrinc

我有一个问题,因为两天来研究了更多我无法解决的问题

我在一个班级里有一个应用程序运行流式音频。在另一个视图中,我有一个包含播客的表,这些播客将通过url打开

为了利用第一个类的代码创建了一个委托,因此当用户在任何音频播客中播放时,我使用主类的方法来更改参数(在本例中为URL)

委托工作正常,参数的传递也正常。唯一的问题是委托必须实例化主类

ClassePrincipal *classePrincipal  = [[ClassePrincipal alloc] init];
classePrincipal.delegate = self;

[classePrincipal method];
如果音频已经在主类(实例化为新对象类)中运行,它将在已经运行的基础上开始播放音频播客

即使在他继续播放播客之前我有一个重要的停顿,例如:

- (void) playPodcast {
                  [classePrincipal destroyStreamer];
                  [classePrincipal startStream];

}
destroyStreamer正确调用了该方法,但由于该实例是从头创建的classePrincipal,因此他没有看到播放任何音频

这是一个问题,但是有没有办法在不实例化类的情况下调用传递ClassePrincipal参数的方法?由于没有在内存中分配新对象,我可以查看音频是否正在播放,以及是否适合他


如果还有其他的解决方法,也谢谢。

根据我所能告诉你的,你可能想把这个类变成一个单例。通过这种方式,如果它还没有被实例化,那么您将实例化它,如果它已经被实例化,那么您可以在代码中进行一些检查,以在启动新的音频之前停止当前音频。我发现的一个随机教程是

这听起来像是父母/孩子之间的关系。除非应用程序的其他部分也可以开始播放音频,否则我可能不会使用单件。不知道。我在我的类中实现了单例并调用了函数[[MyClass sharedManager]stop];该功能已执行,但音频没有停止,我得到了与代表相同的结果。有什么想法吗?我不觉得我不能用我掌握的有限信息帮助您更进一步。我的第一个问题是你能在没有sharedManager的情况下手动停止播放器吗?如果是这种情况,那么我将查看您的“sharedManager”是否正确地检查现有实例并正确地处理它。