Описание тега method-swizzling

Замена метода - это процесс изменения реализации существующего метода.
0 ответов

Objective-c во время выполнения перечисляет все методы класса, включая Swizzled

Меня интересуют в основном изворотливые методы. Я пытался это Есть ли способ перечислить все методы Swizzled в приложении для iOS? но зависимость не работает. Есть ли способ грубой силы просто перечислить все классы и методы для сравнения?
0 ответов

Идентификаторы класса Objective-C имеют префикс objc_class_ вместо _OBJC_CLASS_$_

Я пытаюсь использовать некоторые методы в приложении, созданном с помощью Objective-C. Я получаю эту ошибку: Symbol not found: _OBJC_CLASS_$_IASAvatarViewController После открытия исполняемого файла в Hopper, я вижу, что все классы имеют префикс obj…
0 ответов

Как найти оригинальную реализацию метода, когда множественный метод метит

например, если источник IMP UIViewController - ViewDidLoad - Вопрос: В моем проекте может понравиться main Project + many other SDK(frameworks), если другой член команды борется с тем же методом, как UIViewController - ViewDidLoad, и я, как убедитьс…
29 окт '18 в 08:57
1 ответ

IOS Swizzle лучше понять

У меня есть UIViewController с этим кодом: - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; NSLog(@"CLASIC"); } А потом у меня есть фреймворк с категорией UIViewController, который делает свистлинг следующим образом: + (void)lo…
07 ноя '18 в 11:34
0 ответов

Метод Swizzling в ObjC SDK

Я работаю над написанием нового HTTP Library своего рода SDK. Для реализации сквозных задач мы планируем написать поддержку промежуточного программного обеспечения, похожую на C#, т.е. механизм обработки повторных попыток, перенаправления, ведения ж…
2 ответа

Как прокрутить метод init класса NSURLConnection

Я хочу swizzle init init метод класса NSURLConnection, и я пробовал этот код, но он не работает для меня extension NSURLConnection{ public override class func initialize() { struct Static { static var token: dispatch_once_t = 0 } dispatch_once(&…
22 фев '16 в 08:10
0 ответов

Попытка обмануть программное обеспечение macOS для работы на High Sierra

Итак, у меня есть программное обеспечение, которое перестало работать после того, как я обновился до High Sierra. Не было выпущено никакой новой версии программного обеспечения, поэтому я не могу получить новую поддерживаемую версию. То, что я хочу …
2 ответа

Использование dispatch_once в методе swizzling

В статье NSHipter о методе swizzling говорится, что "Swizzling всегда должен выполняться в dispatch_once". Почему это необходимо, так как + загрузка происходит только один раз на класс?
1 ответ

Как правильно выпить с method_setImplementation()?

Я пытаюсь понять, как правильно пить, используя method_setImplementation(), До сих пор в Интернете я видел два преимущественно популярных метода метода Swizzle, один раз использующий method_setImplementation() в то время как другие levarages method_…
0 ответов

Заменить (swizzle) весь класс (со всеми экземплярами и статическими методами) в Objective-C

Я новичок в методе Swizzling, и теперь я хотел бы сделать немного больше с этим на iOS: есть ли простой / элегантный способ в Objective-C перенаправить все вызовы существующего класса (ClassA) в другой класс (ClassB) при условии, что он имеет точно …
30 ноя '18 в 14:21
1 ответ

Цель C - В чем разница между IMP и указателем на функцию?

Я недавно запустил проект, в котором мне нужно заняться алкоголем. Пройдя много уроков, я получил вопрос: в чем разница между реализацией и указателем на функцию?
30 дек '15 в 04:50
1 ответ

Является ли метод извращением, а Иза - одним и тем же?

Является ли метод извращением, а Иза - одним и тем же? Если нет, то что такое свист?
2 ответа

Метод swizzling для собственности в swift

Пока можно заменить setMyProperty: метод в obj-c, мне интересно, как это сделать в swift? Например я хочу заменить UIScrollView::setContentOffset:: let originalSelector: Selector = #selector(UIScrollView.setContentOffset) let replaceSelector: Select…
1 ответ

Метод Swizzling в Swift 4

Swizzling в Swift 4 больше не работает. Method 'initialize()' defines Objective-C class method 'initialize', which is not permitted by Swift Это то, что я нашел решение, поэтому хотел оставить вопросы и ответить для других.
22 сен '17 в 09:15
1 ответ

Модульное тестирование синглтона: макет и пьянство

В настоящее время я пытаюсь протестировать некоторый код, который использует AVAudioSession и мои попытки издеваться над ним, потому что это единственный, оказались до сих пор трудными, и я провел небольшое исследование и натолкнулся на идею о том, …
1 ответ

Есть ли способ перечислить все методы Swizzled в приложении для iOS?

По сути, я ищу способ определить, когда / какие сторонние библиотеки переполнены. Недавно я столкнулся с ситуацией, когда в рекламной библиотеке использовался странный форк AFNetworking. AFNetworking кружит NSURLSessionTask, и эти два кружка не игра…
0 ответов

Заменить реализацию метода в Android с помощью отражения / загрузчика классов

В настоящее время я занимаюсь исследованием методов манипулирования во время выполнения в мобильных приложениях. На платформе iOS я легко могу выполнить метод перебора методов, вызывая функции библиотеки времени выполнения target-c, такие как class_…
1 ответ

Почему этот метод UIViewController Swizzling не работает?

Я пытаюсь использовать пример кода NSHipster Fake Book для viewWillAppear: метод UIViewController. Но похоже, что это не работает ожидаемо, так как xxx_viewWillAppear: метод никогда не вызывался. Я просто не могу понять почему. Пожалуйста, помогите …
19 авг '18 в 16:53
3 ответа

Метод Swizzling, чтобы сохранить чистоту реализации класса

Я нахожусь в ситуации, когда один из viewControllers моего приложения становится довольно большим, особенно потому, что я добавил "Состояние учебника", которое добавляет другую реализацию для многих методов этого класса, которые я контролирую, прове…
12 июн '15 в 09:41
1 ответ

UIViewController метод Swizzling не работает

Я использую категорию на UIViewController, чтобы переключить viewWillAppear: метод через несколько ViewController. @implementation UIViewController (Tracking) +(void)load { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ Class cla…
04 янв '17 в 21:14