Hi,
the odd thing here is that the behavior on IOS should be reproduceable within the editor. Do you run the profiler when running on IOS, and what xcode is saying about the crash? or it is "crashing" within your game but not actually shutting down the application?
Prefab or not, this is not going to solve referencing from one object to another during runtime, reference to other objects in the scene outside the prefab hierarchy is only a restriction for the prefab that sits in the asset folder.
so when you instantiate a prefab, this is when you need to either pass it the reference to the gameObject you want that prefab to be aware or have the prefab itself look for all the thing it needs on the scene.
using a global var to reference your main character is a good way to do this, all your ennemies prefab simply use this global var, this is fine.
bye,
Jean