The reason you get so many downvotes and close-votes is that it is a stupid idea from the start for so many reasons...
Assuming your candidate is actually any good, they already have a job. So giving someone "4 days" starting from a Monday is basically no time at all, while giving them "3 days" starting on a Friday might be reasonable.
Giving someone "homework" is not going to tell you anything. They could just send the whole thing to their buddy or even a paid service overseas.
Giving someone experienced multiple days of homework unpaid is insulting. You may get away with it if you are Apple or Google, but I would guess you are not.
Giving someone iOS work is implying they own a Mac. Something you as their potential employer are supposed to provide them with. If you don't sent them a Mac to use for the time, you really have not understood iOS development at all, or think your company is so important people would just buy one for the interview. Please note that you could get away with Android development, because it just requires any computer and free tools. Something a candidate will probably have anyway, even though technically the same logic applies.
So... how many days? Doesn't matter. You could give two or thirteen-and-a-half, it doesn't make a difference. The result will always be useless for your purpose of figuring out if that person is a good developer.
If you want to figure that out, let them develop while your technical person watches. It doesn't take more than 30 minutes tops to figure out if they know what they are doing or not. Maybe an hour. And no, the app won't run by then. Because that takes time. But figuring out whether the person knows what they are doing does not. It just takes someone with experience in iOS development.