Самый простой ответ заключается в том, что большинство программ не будут использовать большинство методов делегатов, поэтому вместо того, чтобы заставлять разработчиков создавать пустые методы, которые не используются, методы обозначаются как необязательные и могут использоваться только тогда, когда они вам нужны. Причина в том, что методов так много, в том, что разработчики SDK предоставили много вещей, которые вы можете сделать, что необходимо для надежного устройства, такого как смартфон.