the context should be a some object rather than nil.

I think it is better to pass a non-nil TBTableDataContext object as a parameter even if the method doesn't require special context.
In future we may want to store some information to the context but nil cannot hold anything.
However, TBTabledataContext's convenience constructor returns a shared instance rather than creating a new because the class has nothing currently.