«Нормальная» кнопка UIB вызывает исключение obj_stack_overflow или EXC_BAD_ACCESS

Это выглядит достаточно безобидным. В моем приложении делегат я проверяюNSUserDefaults для флага, чтобы показать советы при запуске. Если оно'затем, в концеapplicationDidFinishLaunching:, Я сделаю это:

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

Идея состоит в том, чтобы показать эту точку зрения временно. (Обратите внимание, что этоне модальный ВК. На данный момент нет навигационного контроллера, плюсв любом случае в этом представлении нет панели навигации.)

Как только эта точка зрения отклоняется, мыдобавлю наши упрежденныеUITabBarController»s представление к окну и переход к нему, затем удалите представление наконечника из главного окна. Я неЯ дошел до точки увольнения, потому что, ну, продолжайте читать.

Мой TipsView ’VC более или менее подключен так:

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:

Источник содержит объявления и определения для всех трехIBAction звонки. Прямо сейчас двое из них ничего не делают. Третий меняет чаевыеtext, изменяет размер, чтобы соответствовать, и регулирует представление прокруткиcontentSize чтобы соответствовать.

Когда я запускаю приложение,TipsViewController вид показывает просто отлично. Я даже могу прокрутить текст подсказки. Тем не менее, когда я запускаю касание внутри на любомUIButton, Xcode начинает сажать меня в источник (где ямы установили точку останова на каждомIBAction)… а затем выручает либоEXC_BAD_ACCESS или же .obj_stack_overflow

Я сравнил это с другими частями приложения, где у меня есть VC, представление и кнопки. Он идентичен во всех отношениях, за исключением того, что в этом случае ямы добавили VCвид как подпредставление приложенияокно вместо того, чтобы выдвигать ВК на контроллер навигации, Кроме того,View Controller Руководство по программированию для iPhone OS Документы говорят, что это честная игра:

Если вы используете один контроллер представления в своем приложении, вы добавляете его представление в окно вместо добавления контроллера представления на панель вкладок или контроллер навигации.

Правда яделать иметьUITabBarController ждет своего часа, и у него есть вкладки сUINavigationControllers (и другие ВК) в нем. Однако, если отображается вид подсказки, контроллер панели вкладокс точки зренияне еще был добавлен в окно. Намерение состоит в том, чтобы обменять это после того, как мызакончили показывать советы. Другими словами, для всех намерений и целей мывременно действует, как будто у нас есть один VC в игре. После этого переключаемся на панель вкладок и сносим подсказку ВК.

Возможно яя делаю что-то не так? Есть ли способ лучше? ( «Там'должно быть лучше! »)

Пример стека трассировки:

#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

Как вы можете видеть из следа, мы в конечном итоге вdoesNotRecognizeSelector: ... за исключением того, что я могу ясно видеть методы в моем источнике VC наконечника. Кроме того, онивсе подключено. (В IB нет многократных соединений или чего-то подобного. Там все выглядит хорошо, вплоть до «Файла»отношения с владельцем.)

Подсказки приветствуются / приветствуются!

Ответы на вопрос(1)

Ваш ответ на вопрос