I've found that if you instantiate a UITab object with an identifier, you cannot later pass another UITab instance with the same identifier to UITabBarController.tabs. That will cause the exception you mentioned.
If you need to set the tabs property more than once, for every identifier, check if you already have a UITab with that identifier and reuse it, otherwise create a new instance.
It's quite strange, that this is really necessary.
Topic:
UI Frameworks
SubTopic:
UIKit