"Normal" UIButton causando obj_stack_overflow ou exceção EXC_BAD_ACCESS

Com certeza parece inócuo o suficiente. No meu App Delegate, eu verificoNSUserDefaults para um sinalizador mostrar dicas na inicialização. Se estiver definido, no final deapplicationDidFinishLaunching:, Eu faço isso:

TipsViewController *vc = [[TipsViewController alloc]
  initWithNibName:@“TipsView" bundle:nil];
[window addSubview:vc.view];
[vc release];

A ideia é mostrar essa visão temporariamente. (Observe que não é um VC modal. Nenhum Controlador de navegação neste ponto, além disso, não há barra de navegação nessa exibição, de qualquer maneira.)

Depois que essa exibição for rejeitada, adicionaremos nossa preferênciaUITabBarControllerVisualização da janela para a transição e, em seguida, remova a visualização da ponta da janela principal. Ainda não cheguei ao ponto de vista do ponto de vista porque, bem, continue lendo.

O VC do meu TipsView está mais ou menos assim:

UIView -> view -> File’s Owner (TipsViewController)
  UIImageView -> background image
  UIView -> tipView -> File’s Owner
    UIImageView -> background image
    UIScrollView
      UILabel (tip text)
    UIButton -> touch-up-inside -> -(IBAction)button1:
    UIButton -> touch-up-inside -> -(IBAction)button2:
    UIButton -> touch-up-inside -> -(IBAction)button3:

A fonte contém declarações e definições para todos os trêsIBAction chamadas. Neste momento, dois deles não fazem nada. O terceiro muda a pontatext, redimensiona-o para ajustar e ajusta a visualização da rolagemcontentSize para combinar.

Quando eu corro o aplicativo, oTipsViewController A vista aparece bem. Eu posso até percorrer o texto da dica. No entanto, quando eu acionar um retoque em qualquerUIButton, O Xcode começa a me plantar na fonte (onde coloquei um ponto de interrupção em cadaIBAction)… E depois sair com umEXC_BAD_ACCESS ouobj_stack_overflow.

Eu comparei isso com outras partes do aplicativo onde eu tenho um VC, uma visão e botões. É idêntico em todos os sentidos, exceto que, neste caso,Eu adicionei a visão de um VC como uma subvisualização da janela do aplicativo em vez de empurrar o VC para um controlador de navegação. Além disso, oVeja o Guia de Programação do Controlador para iPhone OS docs dizem que este é um jogo justo:

Se você usar um único controlador de visualização em seu aplicativo, você adicionará sua visualização a uma janela em vez de adicionar o controlador de visualização a uma barra de guias ou a um controlador de navegação.

Verdade, euFaz tenha umUITabBarController esperando nos bastidores, e tem abas comUINavigationControllers (e outros VCs) nele. No entanto, se a visualização da dica estiver sendo mostrada, a visualização do controlador da barra de guiasnão ainda foi adicionado à janela. A intenção é trocá-lo depois que terminarmos de mostrar dicas. Em outras palavras, para todos os efeitos, estamos temporariamente agindo como se tivéssemos um único VC em jogo. Depois, mudamos para a barra de abas e derrubamos a ponta VC.

Talvez eu esteja fazendo algo sutilmente errado? Existe uma maneira melhor? ("Tem que haver uma maneira melhor!")

Amostra de rastreamento de pilha:

#0  0x992b6f52 in objc_exception_throw
#1  0x302d6ffb in -[NSObject doesNotRecognizeSelector:]
#2  0x3026e056 in ___forwarding___
#3  0x3024a0a2 in __forwarding_prep_0___
#4  0x308f79d1 in -[UIApplication sendAction:to:from:forEvent:]
#5  0x309598b1 in -[UIControl sendAction:to:forEvent:]
#6  0x3095bad2 in -[UIControl(Internal) _sendActionsForEvents:withEvent:]
#7  0x3095a81e in -[UIControl touchesEnded:withEvent:]
#8  0x30910fdf in -[UIWindow _sendTouchesForEvent:]
#9  0x308faecb in -[UIApplication sendEvent:]
#10 0x309013e1 in _UIApplicationHandleEvent
#11 0x32046375 in PurpleEventCallback
#12 0x30245560 in CFRunLoopRunSpecific
#13 0x30244628 in CFRunLoopRunInMode
#14 0x32044c31 in GSEventRunModal
#15 0x32044cf6 in GSEventRun
#16 0x309021ee in UIApplicationMain
#17 0x00002888 in main at main.m:14

Como você pode ver a partir do traço, acabamos emdoesNotRecognizeSelector: ... exceto eu posso ver claramente os métodos na minha ponta da fonte VC. Além disso, eles estão todos ligados. (Não há fiações múltiplas ou qualquer coisa assim no IB. Tudo parece bem lá, até os relacionamentos do Proprietário do Arquivo.)

Pistas bem-vindas / apreciadas!

questionAnswers(1)

yourAnswerToTheQuestion