Since you're generating the frames from an algebraic function, why don't you simply follow Matt Gallagher's example? In brief: just move the function inside the render callback and transfer the parameters through the vc instance.
Generally speaking your choices are limited for passing data to a callback that has a pre-defined form. I'm probably the last person to counsel on good form in Objective C, but one of the few options is to use globals.
You could pass mySignal
array (or else the frequency) as a global. Not the most 'elegant' object-oriented solution, but one that will work and avoid all the O.O. frou-frou overhead. Seems only appropriate to use a C-based solution, since the render callback is at base a C function.
As to "tracking," not quite sure what you mean, but in my own work with generating tones, I've initialized a remainingCycles
global with the tone-length (in frame cycles = length in seconds * Fs
or sampleRate
whatever you want to call it) and decrementing each pass through the frame
loop; when the number hits zero, you end the tone. (Of course, you could use an instance variable instead of a global.)
Maybe this violates the Canons of Object-Oriented Coding, but at the end of the day, you just need to get the job done.