Документация по этому вопросу должна быть внимательно прочитана. «Основной экран», как его определяет Apple, не обязательно является экраном со строкой меню. «Главный экран» - это экран, который принимает события клавиатуры. Если по какой-то причине ОС считает, что ни один экран не имеет фокусировки клавиатуры, я могу понять, почему mainScreen будет возвращать NULL.
Чтобы получить экран со строкой меню (И начало координат в (0,0)), вам необходимо использовать:
[[NSScreen screens] objectAtIndex:0]
Я никогда не видел этот возврат NULL, хотя я не скажу, что это не может произойти.