Как я удаляю методы экземпляра во времени выполнения в Objective C 2.0?

  1. Продают товар к несценариям людей.

  2. Поддерживают сайт в рабочем состоянии на скорости, которую не замедляют боты.

  3. не изводят 'нормальных' пользователей ни с какими задачами завершиться, чтобы доказать, что они являются человеческими.

Вы, вероятно, не хотите слышать, что это, но № 1 и № 3 являются взаимоисключающими.

On the Internet, nobody knows you're a dog

ну, никто не знает, что Вы - бот также. Нет никакого программного способа сказать, существует ли человек на другом конце соединения, не требуя, чтобы человек сделал что-то. Препятствование тому, чтобы сценарии/боты делали материал в сети, является целой причиной, КАПЧИ были изобретены. Это не похоже, это - некоторая новая проблема, которая не видела большое усилие, израсходованное на него. Если бы был лучший способ сделать это, то, которое не включило стычку реальным пользователям, которых делает КАПЧА, то все уже использовали бы ее.

я думаю, что необходимо считаться с фактом, что, если Вы хотите сохранить ботов от своей страницы упорядочивания, хорошая КАПЧА является единственным способом сделать это. Если спрос на Ваше случайное дерьмо достаточно высок, что люди готовы перейти к этим длинам для получения его, законные пользователи не собираются быть испуганными КАПЧОЙ.

11
задан Steve Weller 22 August 2009 в 04:55
поделиться

1 ответ

Короче говоря, вы не можете.

Вы могли в Objective-C 1.0 ABI / API через:

OBJC_EXPORT void class_removeMethods(Class, struct objc_method_list *) OBJC2_UNAVAILABLE;

Но эта функция была удалена в Objective-C 2.0 из-за удаления методов почти никогда не может быть правильным ответом. Конечно, недостаточно часто, чтобы оправдать накладные расходы, связанные с поддержкой указанной функции.

Также из ObjC2.0 ABI была удалена возможность прямого доступа к структурам классов / методов. Теперь они непрозрачны, поэтому их можно будет изменить в будущем без нарушения совместимости двоичных файлов.

Однако вы могли бы использовать собственный прокси-сервер, который изменяет набор методов, на которые он отвечает. См. Документацию по классу NSProxy; http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSProxy_Class/Reference/Reference.html

Конечно, из этого вопроса возникает вопрос "

10
ответ дан 3 December 2019 в 04:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: