If device has no camera, observers are not assigned, so we check is device has camera before (with same condition as in sharedSetup
Caused an exception at deallocation since we were trying to remove inexistent observers
Returning nil in init methods was source of bug on device without camera (e.g. simulator) since the view when allocated is set to nil.
It's an unecessary behavior, it's better to keep an empty view which doesn't block all the application which is using it.
Added a NSLog to warn developer.