Поймите сообщение об ошибке: оно говорит, что что-то продолжало использовать (и модифицировать) объект после того, как вы его освободили. Этот код освобождает его и не изменяет его после этого, но вы должны спросить, что еще может продолжить его использовать (не зная, что он уже освобожден).
Каждый раз, когда код в этом фрагменте запускается, он освобождает (освобождает) любой существующий checkinViewController и выделяет новый, и, очевидно, он никогда больше не касается старого. Но у кого еще может быть указатель на старый объект?
Возможно, другой код, который вы написали, и, возможно, [окно делегата], которое получает ссылку через "[[окно делегата] addSubview: checkInViewController.view];"? Надеюсь, что последний использует свою собственную ссылку, то есть релиз не сразу его освободит.
Но следите за тем, куда вы копируете этот указатель, не добавляя ссылку. Если вы делаете это где-то, а затем в другом месте (например, в приведенном выше фрагменте), кто-то вызывает release по тому же указателю, у вас теперь может быть указатель на освобожденный объект.