Ir para conteúdo
Visualizar no app

Uma forma melhor de navegar. Saiba mais.

MM Fórum

Um app em tela cheia na sua Tela de Início com notificações push, avisos e mais.

Para instalar este app no iOS/iPadOS
  1. Toque no ícone de Compartilhamento no Safari
  2. Role o menu e toque em Adicionar à Tela de Início.
  3. Toque em Adicionar no canto superior direito.
Para instalar este app no Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Acessar dados de outra classe sem criar nova instancia

Featured Replies

Postado

Estou com um problema a 2 dias já pesquisando mais não consegui resolver.

em um app tenho uma classe que roda um streaming de audio. Em uma outra view, tenho uma tabela com podcasts que serão abertas via url.

Visando em aproveitar o codigo da primeira classe criei um delegate, Assim quando o usuario der o play em algum audio da podcast eu ocupo os metodos da classe principal só mudando os parametros (no caso a URL).

O delegate funciona corretamente, a passagem de parametros também. O único problema é que no delegate tenho que instanciar a classe principal.


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

[classePrincipal metodo];
[/CODE]

Caso o audio ja esteja rodando na classe principal, como foi instanciado um novo objeto da classe, ele vai começar reproduzir o audio da Podcast por cima do que já estava rodando.

e mesmo se eu mandar o principal parar antes de reproduzir a podcast ele continua, por ex:

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

}
[/CODE]

o metodo destroyStreamer é chamado corretamente, porem como a instancia classePrincipal foi criada do zero ele não ve nenhum audio sendo reproduzido.

meio que enrolei a pergunta, mas existe alguma forma de chamar um metodo da ClassePrincipal passando parametro sem instanciar a classe? Pois não alocando um novo objeto na memória, eu poderia enxergar se o audio está sendo reproduzido e para-lo.

se existir qualquer outra forma de resolver também agradeço.

  • Respostas 5
  • Visualizações 847
  • Criado
  • Última resposta

Top Postadores Neste Tópico

Postado
  • Autor

Implementei na minha ClassePrincipal um singleTon e chamei a funcao;

[[ClassePrincipal sharedManager] stop];

a função foi executada corretamente, mas o audio continuou a tocar, obtive o mesmo resultado que com o delegate.

ainda sem soução :/

Postado

Implementei na minha ClassePrincipal um singleTon e chamei a funcao;

[[ClassePrincipal sharedManager] stop];

a função foi executada corretamente, mas o audio continuou a tocar, obtive o mesmo resultado que com o delegate.

ainda sem soução :/

Você criou um método private na sua classe principal chamada - (void) stop; ?

  • 2 semanas depois...
Postado

vc não pode criar uma classe que seja static?

Postado

"Orientação a objetos" é seu amigo!

Pensou na possibilidade de usar herança? Pelo que entendi, você tem dois metodos diferentes para cada tarefa.

E claro, você precisa "intertravar" para que não tenha um audio rodando "por cima", como disse.

Editado por franzSilva

Postado

recomendo fazer uns diagramas para tirar sua dúvida

Participe do debate

Você pode postar agora e se registrar depois. Se você tem uma conta, entre agora para postar com ela.

Visitante
Responder este tópico…

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conta

Navegação

Buscar

Buscar

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.