injectionforxcode icon indicating copy to clipboard operation
injectionforxcode copied to clipboard

Subclass of CAShapeLayer not injected

Open eduardbosch opened this issue 6 years ago • 2 comments

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! 🎉

eduardbosch avatar Apr 17 '18 09:04 eduardbosch

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.

johnno1962 avatar Apr 17 '18 09:04 johnno1962

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!

eduardbosch avatar Apr 17 '18 18:04 eduardbosch