injectionforxcode
injectionforxcode copied to clipboard
Subclass of CAShapeLayer not injected
Hi again 🙂
I'm having trouble with updating a class that extends CAShapeLayer. The log says it has been injected, but the app does do not reflect its changes.
The class is as simple as this:
public class SampleLayer: CAShapeLayer {
public init(path: UIBezierPath, strokeColor: UIColor) {
super.init()
print ("initializing")
self.path = path.cgPath
self.strokeColor = strokeColor.cgColor
self.lineWidth = 5
self.fillColor = nil
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
I'm sure that this init
function is called every time I inject something as every time I inject something, the print('initializing')
appears in the log. If I change the print message to print('another message')
, when I save the file, the log continues to show 'initializing' message. The log also says that the SampleLayer
swift file has been injected
Am I missing something o misconfigured something?
I'm using AppCode, but the problem happens also if I only use Xcode.
Thanks! 🎉
Injecting new instances of things can be a bit problematic as exactly where the “class object” the app messages to create the instance can be undefined and may or not contain your changes. This is a bit of an edge case.
So it happens that this class is not injected and the code is reexecuted with the old class?
Thanks. Even with this little problems, this tool is great!