Sto usando Xcode 4.2 per scrivere e Clang 3.0 per creare un programma che mostri un particolare crash.Over-release che rende la finestra intorpidita
Il programma ha una finestra che significa mantenere ciò che è impostato nel pennino su "Rilascio da Chiuso", quindi è sovrascritto negli usi successivi. È pensato per essere un foglio, quindi viene mostrato usando beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:
. Cercando di mostrare la finestra una seconda o terza volta si dovrebbe bloccare l'applicazione.
Ricordo che è successo un anno fa, con il programma che riceveva EXC_BAD_ACCESS
e che faceva scattare il debugger in quel punto. Ricordo anche di essere in grado di scovare il problema in Strumenti usando il modello di Zombi.
Questo è quello che voglio (questo programma fa parte di una presentazione per mostrare le tecniche di debug), ma non è quello che sta succedendo ora. Ora, il programma non si blocca; Gli strumenti mostrano che il numero di ritenzione sulla finestra scende a 1 due volte, ma non inferiore, quindi non viene deallocato.
Sarebbe bene se il problema si fermasse lì; Potrei semplicemente nascondere e mostrare il foglio un'altra volta o due. Il problema è, la seconda volta che faccio apparire il foglio (dovrebbe essere-morto-ma-ha-almeno-mantieni-ti-conservi-vivi), è insensibile.
Con ciò intendo che né il foglio né alcun controllo in esso contenuto (contiene un campo, una visualizzazione di testo e due pulsanti) risponde agli eventi. Il battito cardiaco non fa nulla in esso; la finestra ha un pulsante OK, ma quando la finestra è intorpidita, il pulsante OK non pulsa. Nulla funziona per respingere il foglio.
Ma il programma non si arresta. Posso ancora interagire con i menu e il Dock mostra che il programma sta rispondendo. Se provo a smettere, emette un segnale acustico, poiché ha un foglio.
Che cosa sta causando la finestra intorpidita e cosa posso fare al riguardo?
Ecco una versione ridotta del programma che presenta anche il problema: https://github.com/boredzo/NumbWindow
Addendum: giocando ulteriormente con l'app di test, sembra che il foglio ritorni in qualsiasi stato lasciato. Se lo chiudo facendo clic sul pulsante Annulla, il pulsante Annulla è ancora evidenziato quando ritorna. –
ARC è abilitato? – NJones
@NJones: No. Probabilmente starò attaccato a MRC in questo programma e presentazione, a patto che ci siano buone possibilità che i nuovi programmatori Cocoa debbano usare il codice MRC, anche se non lo scrivono ancora. –