Закрытия трудно объяснить, потому что они используются, чтобы заставить некоторое поведение работать, что все интуитивно ожидают работать так или иначе. Я нахожу лучший способ объяснить их (и способ, которым я изучил то, что они делают), должен вообразить ситуацию без них:
var bind = function(x) {
return function(y) { return x + y; };
}
var plus5 = bind(5);
console.log(plus5(3));
, Что произошло бы здесь, если бы JavaScript не сделал , знают закрытия? Просто замените вызов в последней строке ее телом метода (который является в основном, что вызовы функции делают), и Вы добираетесь:
console.log(x + 3);
Теперь, где имеет определение x
? Мы не определили его в текущей области. Единственное решение состоит в том, чтобы позволить plus5
, несут его объем (или скорее объем его родителя) вокруг. Таким образом, x
четко определен, и он связывается со значением 5.
Для полноты картины - так вы получаете значок для любого приложения или файла в вашей системе.
NSImage *iconImage = [[NSWorkspace sharedWorkspace] iconForFile:@"path"];
Передайте путь к набору приложений для значка приложения или путь к файл для значка, связанного с файлом.