If your class implements protocol with associatedtype, it's impossible to put it into array because such protocols have Self-requirement - they need to know concrete type for associatedtype.
However, you can use technique called type-erasure to store type without associated type information. So, for example, you can create a protocol without associatedtype, like so
protocol Operation {
func perform()
}
class SomeClass<T> : AsyncOperation, NetworkOperationProtocol, Operation
And then define an array of such operations:
let operations : [Operation] = []
operations.append(SomeClass.init())
[SomeClass<A>(), SomeClass<B>()]? If so, then it's impossible.