Final by default is correct, since otherwise you are effectively exposing and having to maintain an extra stable API towards subclasses, which is a nightmare and won&#x27;t be done properly unless it&#x27;s intentional.<p>In fact, having virtual methods at all outside of interfaces&#x2F;traits&#x2F;typeclasses is dubious language design since it meshes together the concepts of interface and implementation and makes it inconvenient, impossible or confusing to name the implementation instead of the interface.<p>The issues in the discussion are instead due to Apple&#x27;s framework code being closed source and unmodifiable by users and developers, and also buggy according to the author.