Czy istnieje sposób, aby powiedzieć OS X Lion, aby wyłączył automatyczne zakończenie dla danej aplikacji, której nie chcesz automatycznie kończyć?
FYI Lion jest poddawcą, jeśli jeszcze nie wiedziałeś, a co, jeśli nie chcesz, aby tak było w przypadku określonej aplikacji.
Lion porzuci działające aplikacje za twoimi plecami, jeśli uzna, że potrzebuje zasobów i jeśli nie używasz ich. Heurystyka określania, czy aplikacja jest „w użyciu”, jest bardzo konserwatywna: nie może być aktywną aplikacją, nie może mieć widocznych, nie zminimalizowanych okien - i oczywiście musi wyraźnie obsługiwać automatyczne kończenie.
Powiedzmy na przykład, że nie chcę, aby TextEdit automatycznie zamykał się, gdy nie mam otwartych okien TextEdit i przełączam się na inną aplikację.
Po zapoznaniu się z sekcją Przewodnik po programowaniu aplikacji Mac dla automatycznego zakończenia , pomyślałem, że spróbuję dodać klucz NSSupportsAutomaticTermination o wartości Nie do pliku Info.plist dla TextEdit. (Nie działało: TextEdit ulega awarii przy otwartym).
Należy zauważyć, że plik nie zawierał klucza NSSupportsAutomaticTermination (co oznacza, że Apple używał NSProcessInfo, aby włączyć automatyczne zakończenie), więc dodanie klucza i tak prawdopodobnie nie przyniesie żadnego efektu, ponieważ NSProcessInfo przesłania to, co jest w pliku plist. (Zweryfikowano, że to nie działa, poprzez samopodpisanie TextEdit ze zmodyfikowanym Info.plist, w tym kluczem NSSupportsAutomaticTermination i wartością Nie).
Jednym zauważonym efektem ubocznym jest to, że zmiana czegokolwiek w pliku Info.plist powoduje awarię TextEdit podczas otwierania. Przyczynę zanotowano w dzienniku awarii jako „nieprawidłowy podpis kodu”, co oznacza, że aplikacja TextEdit i cała jej zawartość są podpisane kodem. Obejściem tego problemu jest samopodpisanie aplikacji za pomocą codesign
polecenia i samopodpisanego certyfikatu głównego, zgodnie z opisem w zadaniu Podpisywanie kodu .
Po tym, co próbowałem do tej pory, TextEdit nadal stosuje się do automatycznego zakończenia.