Я думаю, что стандартная интерпретация «закрыт для модификации» означает «добавление новых функций не требует модификации существующего кода».Используя эту интерпретацию, категории не нарушают открытый / закрытый принцип, потому что написание новых методов категории не означает изменение существующего кода.
Что касается особого случая, когда методы категории могут заменить существующие методы в классе, этоне может нарушать принцип Open / Closed, но его осуждают, потому что он опасен.Это одна из тех , «возможно сделать это, но не делать» возможностей языка.