Having public things be in the header and private things in the .m seems exactly right! The header should only expose the public interface, not the implementation details, no?
(On the other hand, defining properties in an anon category, instead of just plain old instance variables in the .m, seems pointless to me -- why have a layer of indirection for the class to access itself?)