I feel like this has less to do with iOS and more with the challenges of testing client-side code vs server-side code. Even Android projects are quite tricky to test despite Java having a strong heritage when it comes to unit testing.
Part of it just comes down to the way the GUI framework (whether it's Cocoa or Android) cuts across all aspects of the application, making it difficult to isolate individual components to test. Add to that a bunch of asynchronous code (which is almost always necessary when you start dealing with the database/network/filesystem) and you have something quite tricky to automate testing for.
Most of the server-side code I've dealt with has been an order of magnitude easier to test, but I think a lot of that comes down to the nature of their respective domains.
Part of it just comes down to the way the GUI framework (whether it's Cocoa or Android) cuts across all aspects of the application, making it difficult to isolate individual components to test. Add to that a bunch of asynchronous code (which is almost always necessary when you start dealing with the database/network/filesystem) and you have something quite tricky to automate testing for.
Most of the server-side code I've dealt with has been an order of magnitude easier to test, but I think a lot of that comes down to the nature of their respective domains.