They both refer to identifiers associated with the storyboard. The main difference is that one ( performSegueWithIdentifer ) creates an object based on the end of the segue (where the segment indicates), while the other ( instantiateViewControllerWithIdentifier ) creates a unique VC based on the VC identifier (not for the segment).
You can have multiple segue with the same identifier in different places of the storyboard, while the VC in the storyboard cannot have the same identifier.
Firo
source share