Все остальные пункты здесь верны, но для вас также важно понимать, что self
является неявным параметром для каждого метода Objective-C (objc_msgSend()
передает его) и может быть записан, как любой другой параметр метода. (Запись в явные параметры, как правило, не одобряется, если только они не являются параметрами.)
Как правило, это делается только в методе -init
по причинам, указанным другими. Это имеет какой-то эффект только потому, что self
возвращается из метода и используется в присваивании id obj = [[NSObject alloc] init];
. Это также влияет на неявное разрешение иваров, потому что, например, если myVar является иваром моего класса, то доступ к нему осуществляется через метод вызывает его неявное разрешение в self->myVar
.
Обратите внимание, что HTTP обычно не держит TCP-соединения открытыми дольше, чем требуется для передачи страницы клиенту; и обычно пользователю требуется гораздо больше времени для чтения веб-страницы, чем для загрузки страницы ... пока пользователь просматривает страницу, он не добавляет никакой нагрузки на сервер.
Таким образом, количество людей, которые могут одновременно просматривать ваш веб-сайт, намного больше, чем количество TCP-соединений, которые он может одновременно обслуживать.
Это довольно сложный вопрос. Нет никаких реальных программных ограничений на количество активных подключений, которые может иметь машина, хотя некоторые ОС более ограничены, чем другие. Проблема становится одним из ресурсов. Например, предположим, что одна машина хочет поддерживать 64 000 одновременных подключений. Если сервер использует 1 МБ ОЗУ на соединение, ему потребуется 64 ГБ ОЗУ. Если каждому клиенту необходимо прочитать файл, нагрузка доступа к диску или массиву хранения становится намного больше, чем могут обрабатывать эти устройства.