I mean I know enough objective-c to be dangerous but it still looks wacky! (sorry, not really feedback for you but!)
Consider an instance of the app waiting to receive a file, which will wait for data to appear in order across the TCP link: first the filename length, then the filename, then the chunk size, and finally data chunks from the sender. It may be better, especially for future expansion of the metadata you need to send, to define structures for each of these steps and transmit them across the link. I am sure it will have some impact on performance, but it should be relatively negligible.