Comments 6
О! Спасибо! Собиралься в понедельник сесть и разобраться как сделать подобное :)
> Но почему-то в Apple решили не помещать в заготовочные файлы полную структуру Method
Видимо потому что вас, как конечного пользователя, это не касается. Возможно, они решили как-то инкапсулировать интерфейс и данные которые вас не касаются, чтобы при изменении имплементации ваш код не сломался.
А ваша задача(не RTL, а вызов оригинального метода) решается посредством свиззлинга, а то что многие, по вашим словам, о нем не знают это хорошо.
P.S. надеюсь я правильно понял вашу задачу
Видимо потому что вас, как конечного пользователя, это не касается. Возможно, они решили как-то инкапсулировать интерфейс и данные которые вас не касаются, чтобы при изменении имплементации ваш код не сломался.
А ваша задача(не RTL, а вызов оригинального метода) решается посредством свиззлинга, а то что многие, по вашим словам, о нем не знают это хорошо.
P.S. надеюсь я правильно понял вашу задачу
На самом деле скрывать эту структуру смысла нет, ну если только они не хотят заставить всех пересобрать свои приложения, соответственно смысла прятать её также нет. Тем более, они сами её описывают в документации.
Я в корне не согласен с тем, что хорошо, что многие незнают. С этими многими потом видишься на собеседованиях и на тебя смотрят, как не пойми на кого. Runtime надо знать, иногда это сильно выручает.
О замене реализаций методов я в курсе, просто решено было пойти таким путем (и вообще любую задачу можно решить массой способов). Со сменой реализаций, на мой взгляд, получилось бы полная мешанина. А так, в дальнейшем всё это обернется в define и будет очень неплохо выглядеть.
И вообще, статью писал, что бы другие понимали, что это возможно. Кому-то это пригодится. Кому-то это просто станет интересно и, посмотрев системные заголовочные файлы, найдет себе что-либо нужное.
Я в корне не согласен с тем, что хорошо, что многие незнают. С этими многими потом видишься на собеседованиях и на тебя смотрят, как не пойми на кого. Runtime надо знать, иногда это сильно выручает.
О замене реализаций методов я в курсе, просто решено было пойти таким путем (и вообще любую задачу можно решить массой способов). Со сменой реализаций, на мой взгляд, получилось бы полная мешанина. А так, в дальнейшем всё это обернется в define и будет очень неплохо выглядеть.
И вообще, статью писал, что бы другие понимали, что это возможно. Кому-то это пригодится. Кому-то это просто станет интересно и, посмотрев системные заголовочные файлы, найдет себе что-либо нужное.
> Тем более, они сами её описывают в документации.
> любую задачу можно решить массой способов
Вы помните что было с isa? Свиззлинг использует только публичное API, это дает немного больше гарантий, нежели игры с указателями.
> А так, в дальнейшем всё это обернется в define и будет очень неплохо выглядеть.
Спорный вопрос, макросы еще то зло, использовать их ради «чтоб красиво» — звучит очень странно.
> Runtime надо знать, иногда это сильно выручает
Безусловно, только, пожалуй, все задачи (ну кроме манки-патчинга) решаются без использования рантайма, и уж тем более без игр с указателями.
> любую задачу можно решить массой способов
Вы помните что было с isa? Свиззлинг использует только публичное API, это дает немного больше гарантий, нежели игры с указателями.
> А так, в дальнейшем всё это обернется в define и будет очень неплохо выглядеть.
Спорный вопрос, макросы еще то зло, использовать их ради «чтоб красиво» — звучит очень странно.
> Runtime надо знать, иногда это сильно выручает
Безусловно, только, пожалуй, все задачи (ну кроме манки-патчинга) решаются без использования рантайма, и уж тем более без игр с указателями.
Честно говоря, не знаю, что было с ISA, или упустил, или начал objective c изучать после этого. С тем что многие могут выстрелить себе в ногу — это понятно, но указатели — это на столько простая вещь, что не стоит её бояться. Надо пробовать и ошибаться, потом еще раз пробовать…
По поводу макросов, спорный вопрос. Кто-то их боится, кто-то не понимает, но однажды написанный правильно макрос может облегчить жизнь в дальнейшем. Имхо.
С подавляющим большинством задаст, конечно, можно разобраться и так. Но бывают и более хитрые и, как вы выразились, манки-патчинг — не предел.
По поводу макросов, спорный вопрос. Кто-то их боится, кто-то не понимает, но однажды написанный правильно макрос может облегчить жизнь в дальнейшем. Имхо.
С подавляющим большинством задаст, конечно, можно разобраться и так. Но бывают и более хитрые и, как вы выразились, манки-патчинг — не предел.
Sign up to leave a comment.
Вызов не предопределенного метода в категории после его переопределения