Если не трудно, поделитесь примером кода. Надо чтобы этот код заработал в Swift 4.2 хотя бы. А лучше в 5 бете. И если в песочнице он не сработает, хотелось бы узнать почему.
Swizzling в Swift 5
Ахах, а можно пример)
Я просто даже не слышал о таком!
Увидел вопрос, новое слово, загуглил, почитал статью на хабре, звучит круто, можно пример)))
class TestSwizzling : NSObject {
@objc dynamic func methodOne()->Int{
return 1
}
}
extension TestSwizzling {
//In Objective-C you'd perform the swizzling in load(),
//but this method is not permitted in Swift
func swizzle(){
let i: () -> () = {
let originalSelector = #selector(TestSwizzling.methodOne)
let swizzledSelector = #selector(TestSwizzling.methodTwo)
let originalMethod = class_getInstanceMethod(TestSwizzling.self, originalSelector);
let swizzledMethod = class_getInstanceMethod(TestSwizzling.self, swizzledSelector)
method_exchangeImplementations(originalMethod!, swizzledMethod!)
print("swizzled")
}
i()
}
@objc func methodTwo()->Int{
// It will not be a recursive call anymore after the swizzling
return 4
}
}
var c = TestSwizzling()
print([c.methodOne(),c.methodTwo()])
c.swizzle()
print([c.methodOne(),c.methodTwo()])
Я пока сам не начал пробелы закрывать в знаниях многое не слышал. Например, относительно недавно понял, почему на собеседованиях заваливали вопросами чем структуры в Swift лучше классов (или наоборот хуже). Если опять же исключить наследование и необходимость изменять миллиардный массив копируя туда-сюда.
Ну объекты классов передаются по ссылке, а объекты структур передаются копии, это наверн единственная разница!
Меня спрашивали по ООП, полиморфизм в основном, жизненный цикл, реактивщина, знаком или нет) работа с сетью, вот нужно с сокетами поработать!)
Толко найти бы апишку какую, где можно потестить!
И архитектура!!!
Меня наводящими вопросами и завели в тупик. Apple рекомендует использовать структуры. И естественный вопрос, почему? ну, чтоб долго не тянуть. Там все упирается в способы вызовов методов. dispatch methods
. И все эти отличия C - obj-c - swift.
Конечно я в этой теме еще плаваю, но понимание приходит со временем.