The "Adjusting the thread stack size" section of the Apple Threading Programming Guide on page 27 says:
On iOS and Mac OS X v10.5 and later, allocate and initialize an NSThread Object (do not use the detachNewThreadSelector: toTarget: withObject: method)
Despite the fact that on page 22 it says that detachNewThreadSelector is one way to create threads using NSThread.
And he gives this example on page 23 on how to start your thread:
NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(myThreadMainMethod:) object:nil]; [myThread start];
According to the manual, which will create a separate file in your application. Try creating a stream this way and see if the OS stops killing your stream.
For reference: reference to manual
http://developer.apple.com/library/ios/iPad/#documentation/Cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.html#//apple_ref/doc/uid/10000057i-CH15-SW2
Page 29 also mentions that if your application uses the managed memory model that you seem to have, creating an autostart pool in your thread input routine should be the first thing you do and similarly destroy that last one that your thread does. sure that this will not destroy your thread, but make sure you do it.
Having a try / catch block in your thread input routine may not solve the killing problem, but you will avoid your application exit if an error occurs in your thread.
I forgot to mention this other design tip that can help you with resource constraints, as Duncan noted. According to the manual p. 18:
Avoid common data structures
The easiest and easiest way to avoid conflicts associated with a resource stream is to give each stream in your program its own copy of any data that it needs. Parallel code works best when you minimize communication and resources among your threads.
Which, I think, you can do it in your application. In addition to what Duncan mentioned, “do not provide assets directly to the AVPlayer object, but instead provide an instance of AVPlayerItem”, do this by creating separate instances for each of your streams, one instance of AVPlayerItem for the player’s stream and one instance of AVPlayerItem for the extraction stream .