Finally settled on a delegate/notification system combination that works, and is rather clever if I do say so myself.
* Source/DebuggerConnection.m:
([DebuggerConnection socketDidAccept]): Changing from a notification receiver to a delegate method
* Source/SocketWrapper.h: Making the notification constants not be public
* Source/SocketWrapper.m:
([SocketWrapper initWithPort:]): Register the instance of SocketWrapper as a global notification observer
([SocketWrapper setDelegate:]): Removed all occurrences of notification observing
([SocketWrapper _sendMessageToDelegate:]): New function. Receives all notifications and passes up the ones that the object sent (ableit from another thread) to the delegate
([SocketWrapper connect]): Change the type of notification we post
([SocketWrapper _postNotification:withObject:]): Change the key for where we store the delegate in userInfo