Ho un oggetto accessibile tramite una var statica in una struttura (soluzione per la mancanza di classe di supporto variabile nella rapida in questo momento), strutturata in questo modo:EXC_BAD_ACCESS su iOS 8.1 con dizionario
struct Constants{
static var myObj = MyObject()
}
MyObject ha un dizionario in questo modo:
class MyObject{
private var params = Dictionary<String,AnyObject>()
func addParam(key:String, value:AnyObject){
params[key] = value
}
}
Ora alla prima chiamata a questo oggetto per Contants.myObj.addParam("param", value:123)
tutto va bene e params ha contenuti ["param":123]
. Alla seconda chiamata per Contants.myObj.addParam("param", value:456)
, ottengo un EXC_BAD_ACCESS.
Ecco il kicker, questo si verifica solo in iOS 8.1. Inoltre, se aggiungo la riga let stupidHack = self.params
come prima riga del mio metodo addParam
, funziona correttamente. La mia ipotesi è che si tratti di mutabilità dei dizionari. Il let può in qualche modo innescare il dizionario per essere mutevole di nuovo dopo l'inizializzazione.
Qualcun altro si è già imbattuto in questo problema? Qualche idea su come risolverlo?
Grazie!
Ho riscontrato lo stesso problema con un'app Mac che sto creando. Il mio si è schiantato alla terza volta, non importa cosa sia successo. Sei lasciato che il metodo stupidHack abbia funzionato per me. Così bizzarro, ma grazie! –