An Objective-C method call will not be ignored when the object doesn't
define the method. It will crash with a runtime exception.
The author may have been thinking of the way an Objective-C method call
will be ignored when the object is nil. But that's not the case when the
object is there and lacks the method. In that case, the runtime will
call -doesNotRecognizeSelector:. The default behavior in the root class
NSObject is to raise an exception (not the try/catch kind; a similar
case is array bounds checks) and deliberately crash.
https://developer.apple.com/documentation/objectivec/nsobject/1418637-doesnotrecognizeselector?language=objc
The C-like for loop is specific to languages that wanted to copy C syntax and has nothing to do with static vs dynamic typing. Most new languages do not have it and have a foreach loop over iterators instead, regardless of whether they are statically typed or not.