If you just passed in a pointer, all the method could do would alter the already existing NSError object that you are pointing to.
By passing in a pointer to a pointer, it can create new NSError objects and leave you with a pointer that points to them.