With delegation the only way to do it is to define a protocol in the class' header and use those protocols accordingly. You cannot 'create protocols off the hoof'.
In your question you say you want to do one thing from MethodA and another thing from MethodB, well there are a few ways you can tackle this:
1) Define two protocol methods in ClassA and call one from MethodA and the other from MethodB. Then your delegate can implement both these protocols and react accordingly. (This is probably the best way to do it).
2) Define one protocol method in ClassA and pass through different arguments from each method. This is common practice e.g. tableView delegation where the table view passes through self so that the delegate can distinguish between multiple tables.
3) Use blocks. Blocks are a really useful way of passing code around and can be treated like objective-c objects (note: they aren't). Your responding class (i.e. what would be you delegate) defines a block and passes it through to ClassA, ClassA then calls the block at the appropriate time. Blocks are normally used as completion handlers when dealing with animation e.t.c
You cannot however, define a protocol in a method.