NSStream et l'écriture en sortie
Salut,
Depuis quelque temps je m'intéresse sur NSStream. J'essaye de comprendre comment ça fonctionne et surtout de la bonne démarche à suivre pour mettre le stream en place.
J'ai lu et suivi la documentation à ce propos mais des choses m'échappent et notamment une erreur ou plutôt un crash récurrent qui survient lorsque je passe un NSData important. L'erreur arrive sur la méthode write de NSOutputStream. Je met du code pour être plus clair sachant que c'est quasi pareil que sur la doc.
if let stream = aStream as? NSOutputStream {
var readBytes = dataToStream.bytes
readBytes += byteIndex
let dataLength = dataToStream.length
var len: Int = 0
if dataLength - byteIndex >= 1024 {
len = 1024
}
else {
len = dataLength - byteIndex
}
let buffer = Array<UInt8>(count: len, repeatedValue: 0)
memcpy(UnsafeMutablePointer(buffer), readBytes, len)
len = stream.write(buffer, maxLength: len)
byteIndex = byteIndex + len
}
Bon la question est pourquoi j'ai un crash ici lorsque je passe un Data important ?
Autre question, imaginons que j'essayes de stream une vidéo très importante et que l'application doit rester actif avec une navigation toujours présente. à‰tant donné que NSStream fonctionne avec un délégué, qui doit le retenir ?
Comment optimiser et les astuces avec NSStream ?
Réponses
Quel crash as-tu exactement ?
Tu peux toujours mettre la lecture des données en background et le rendering uniquement dans le mainthread.
Un BAD_ACCESS qui sort.
De ce que j'ai vu, ça pourrait peut-être venir du délégué mais il n'est pas relâcher. Faudrait que je fasse une analyse du projet et voir les retours qui sont fais parce que ça m'aidait pas trop. ça semble arriver que lorsque j'envois d'importantes données.
À noter que le crash intervient qu'en écriture, sur la méthode write.