The main problem I've seen with Objective-C is due to the fact that nil has truthiness, so this code is dangerous:
if (input.isInvalid()) {
reject()
} else {
accept()
}
If input is accidentally nil, it's an invisible bug.The other main complaint is when you have a long string of methods unexpectedly turn out nil at the end, it's a pain to figure out which one it was.