Pregunta

Estoy tratando de transferir mi aplicación a iOS5. Estoy usando una conexión TCP a un servidor a través de CFSockets. Mi problema ahora es la conversión (Cast) de CFreadStreamRef a NSInputStream (lo mismo con Write). Con iOS4 podría usar el puente de peaje, pero con el recuento automático de referencia de iOS5, esto ya no es posible. Esto es lo que obtengo:

error: Automatic Reference Counting Issue: Cast to 'NSInputStream *' of a non-Objective-C to an Objective-C pointer is disallowed with Automatic Reference Counting

Código:

        CFReadStreamRef readStream;
        CFWriteStreamRef writeStream;

        CFStringRef strRef = CFStringCreateWithCString(NULL,
              [urlStr UTF8String],
              NSUTF8StringEncoding);
        CFStreamCreatePairWithSocketToHost(NULL,
           strRef,
           4444,
           &readStream,
           &writeStream);



        NSInputStream *iStream = (NSInputStream *)readStream;
        NSOutputStream *oStream = (NSOutputStream *)writeStream;         

¿Hay otra forma de abordar el enchufe/entrada en un NSStream? ¡Gracias por cualquier pista!

¿Fue útil?

Solución

La gestión de puentes sin cargo establece muy claramente que debe usar algo como esto:

NSInputStream *iStream = objc_unretainedObject(readStream);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top