First of all, this is a false dichotomy—you’re presenting an example with two fantastic iOS developers who don’t self-promote and one mediocre one who does. In reality, it’s probably more likely the fantastic iOS developers who self-promotes gets noticed over the fantastic iOS developers who doesn’t self-promote.
Ignoring your rhetorical feint, though, I think it’s completely reasonable to say that—by definition—you cannot be a fantastic iOS developer if you produce things that nobody knows about or uses. I would call the mediocre apps that get usage the product of a superior developer than the good ones that don’t. Software that exists in a vacuum with relatively little adoption is more or less useless. (At least, if we’re talking about a consumer-focused platform like iOS.) It doesn’t matter how elegant your apps are if no one uses them.
The word mediocre is subjective and this just devolves into an ontological or semantic argument surrounding the meaning of mediocre. What’s mediocre to you may very well not be to lots and lots of other people. Or—if you prefer—in the form of an aphorism: ‘One man’s trash is another man’s treasure.’
Ignoring your rhetorical feint, though, I think it’s completely reasonable to say that—by definition—you cannot be a fantastic iOS developer if you produce things that nobody knows about or uses. I would call the mediocre apps that get usage the product of a superior developer than the good ones that don’t. Software that exists in a vacuum with relatively little adoption is more or less useless. (At least, if we’re talking about a consumer-focused platform like iOS.) It doesn’t matter how elegant your apps are if no one uses them.