I haven't seen it used widely myself and personally I haven't really spent time on it. On the surface it does look like a good idea and might be something useful in particular for libraries such as Cocktail to check things at runtime and ensure the caller is using the APIs correctly.
More importantly than contracts are good unit tests, though, in my opinion.