I work as an iOS developer at my day job, but have become concerned that my general CS skills / maths are getting worse due to the lack of day to day applications. I mostly work on UI and networking.
Are there any good books, problem sets, or fundamental habits that I could use?
And, while challenging, it can be a pleasure to work through The Art of Computer Programming slowly over a period of time. I did this for both volumes 1 and 2 back in college and just after.
For pleasure reading on math, Martin Gardner is a great source of material. Particularly the collections of his Scientific American articles (there was work to reprint some of these book collections with Knuth and others editing, but I think it stalled out after 4 or 5 of them). Spend time on the articles to really understand the proofs involved and it can, IMHO, improve your ability to think mathematically.
Otherwise, perhaps as itamarst suggests, find some problem domain which exercises both CS and math and interests you. Write code to implement the mathematical algorithms (which will aid your understanding of them), and then spend time improving the code (practicing your CS skills).
I also doodle math and CS theory problems when I'm bored. Make a state machine that recognizes, in base 2, all multiples of 3, 4, 5, etc. What pattern exists in their structure? Why does the symmetry exist in some of them? What happens when you change the base to 3, 4, ...? Try to apply the concept of generating functions to get to the closed form solution of the Fibonacci sequence. Practicing like this, even if it's problems I know by heart at this point, helps keep the fundamentals that let me solve them the first time fresher in my mind.
I also recommend reviewing the writings of E. W. Dijkstra. A lot of math, CS, and software engineering is covered in there. It's also interesting to read as you'll see a slice of history as the collected papers span about 40 years.