Swizzling UIImage.init (named :) возвращает ноль при получении метода экземпляра - PullRequest
2 голосов
/ 02 февраля 2020

Я пытаюсь прокрутить UIImage функции инициализации, но при попытке получить функцию экземпляра они возвращают ноль. Есть идеи?

let instance = class_getInstanceMethod(self, #selector(UIImage.init(named))
let instanceWithBundle = class_getInstanceMethod(self, #selector(UIImage.init(named:in:with)

1 Ответ

4 голосов
/ 02 февраля 2020

Возвращает ноль, потому что в Objective- C они на самом деле являются методами класса:

+[UIImage imageNamed:]

+[UIImage imageNamed:inBundle:withConfiguration:]

Используйте взамен class_getClassMethod (и обязательно добавьте двоеточия после named и with в селекторах методов):

let imageNamedMethod = class_getClassMethod(UIImage.self, #selector(UIImage.init(named:)))
let imageNamedInWithMethod = class_getClassMethod(UIImage.self, #selector(UIImage.init(named:in:with:)))
...