Почему sendAction: не работает, а executeSelector: работает? - PullRequest
4 голосов
/ 21 сентября 2011

У меня есть собственный класс, который поддерживает механизм целевого действия, но, как ни странно, в данном конкретном случае, когда я пытаюсь вызвать действие, выполнив:

[NSApp sendAction:action_ to:target_ from:self]

это не работает, но так работает:

[target_ performSelector:action_ withObject:self];

Очевидно, что и target_, и action_ имеют допустимые значения.

Это не имеет большого значения, поскольку я заставил это работать.

Я просто не могу понять, почему -[NSApplication sendAction:to:from:] не будет работать, так как это выглядит довольно простой операцией. Я использовал sendAction:... в прошлом без проблем, но, похоже, между этими двумя есть существенная разница, за исключением того факта, что sendAction имеет механизм для поиска объекта, который отвечает на сообщение, если его цель nil.

1 Ответ

0 голосов
/ 25 сентября 2011

Вы уверены, что NSApp не nil в то время, когда вы делаете sendAction:to:from:?

Если это так, ничего не произойдет. Чтобы убедиться, что NSApp является допустимым объектом, выполните [NSApplication sharedApplication] хотя бы один раз или объедините их:

[[NSApplication sharedApplication] sendAction:action_ to:target_ from:self];
...