If your class supports reporting progress, then you can adopt the ProgressReporting protocol.

    protocol ProgressReporting : NSObjectProtocol

    Objects that adopt this protocol should typically be “one-shot” – that is, the progress is setup at initialization of the object and is updated when work is done. The value of the property should not be set to another progress object. Instead, the user of the ProgressReporting class should create a new instance to represent a new set of work.