1) Это, вероятно, означает, что ГХ запоминает объем выделенной памяти, и в следующий раз, когда drain
называется объемом выделенной памяти, сравнивается с последним объемом. Только если изменение является достаточно значительным, сбор мусора происходит.
Позвольте мне объяснить это по-другому: сбор мусора может быть дорогостоящим, поэтому вам нужно решить, когда его собирать. Чтобы избежать ненужной работы, ГХ может запоминать объем памяти после запуска сбора (например, используется 25 МБ). Теперь, когда в следующий раз GC рассматривает коллекционирование, он сначала решает, стоит ли выполнять всю работу. Например, если объем используемой памяти сейчас составляет 25,5 МБ, то, вероятно, ничего не стоит делать. Но если сейчас используется 50 МБ, сбор полезен.
2) Этот материал возник на Mac, где доступен GC. Чтобы разрешить совместное использование кода между iOS и Mac OS X, эти, казалось бы, ненужные методы все еще остаются в iOS, чтобы оставаться максимально совместимыми с Mac OS X. Я даже подозреваю, что это связано с тем, что iOS на самом деле является «форком» Mac OS X и, таким образом, унаследовал этот материал.