Có cách nào để vô hiệu hóa tự động chấm dứt ứng dụng OS X không?


11

Có cách nào để yêu cầu OS X Lion tắt tự động chấm dứt đối với một ứng dụng nhất định mà bạn không muốn tự động chấm dứt không?

FYI Lion là một kẻ bỏ cuộc nếu bạn chưa biết, nếu bạn không muốn nó là một Applicaiton nào đó.

Lion sẽ bỏ các ứng dụng đang chạy của bạn sau lưng nếu nó quyết định nó cần tài nguyên và nếu bạn dường như không sử dụng chúng. Các heuristic để xác định xem một ứng dụng có phải là sử dụng hay không, rất thận trọng: đó không phải là ứng dụng đang hoạt động, nó phải không có cửa sổ hiển thị, không thu nhỏ - và tất nhiên, nó phải hỗ trợ Tự động Chấm dứt.

Ví dụ: giả sử tôi không muốn TextEdit tự động thoát khi tôi không mở cửa sổ TextEdit và chuyển sang Ứng dụng khác.

Sau khi xem phần Hướng dẫn lập trình ứng dụng Mac cho Tự động chấm dứt, tôi hình dung mình sẽ thử thêm khóa NSSupportsAutomaticTermination với giá trị Không vào tệp Info.plist cho TextEdit. (Không hoạt động: TextEdit gặp sự cố khi mở.)

Cần lưu ý, tệp không bao gồm khóa NSSupportsAutomaticTermination (có nghĩa là Apple đang sử dụng NSProcessInfo để kích hoạt tự động chấm dứt), do đó, việc thêm khóa có thể sẽ không có tác dụng gì vì NSProcessInfo sẽ ghi đè lên tệp plist. (Đã xác minh điều này không hoạt động, bằng cách tự ký TextEdit với Info.plist đã sửa đổi bao gồm khóa NSSupportsAutomaticTermination và giá trị của Không).

Một tác dụng phụ được lưu ý là việc thay đổi bất cứ điều gì trong tệp Info.plist khiến TextEdit bị sập khi mở. Nguyên nhân được ghi nhận từ nhật ký sự cố là "chữ ký mã không hợp lệ", có nghĩa là ứng dụng TextEdit và tất cả nội dung của nó là mã được ký. Cách giải quyết là tự ký tên ứng dụng bằng codesignlệnh và chứng chỉ gốc tự ký như đã lưu ý trong tác vụ Ký mã .

Sau những gì tôi đã cố gắng cho đến nay, TextEdit vẫn tuân theo Tự động chấm dứt.


1
Vậy ... nếu bạn tự ký ứng dụng, nó có hoạt động không?
jtbandes

1
Không, chương trình vẫn tự động chấm dứt ngay cả sau khi tự ký, bất kể những gì tôi đã thêm vào Info.plist
MrDaniel

1
Bạn đã thử tải xuống nguồn ví dụ cho TextEdit mà Apple cung cấp với các công cụ dev và chỉnh sửa (hoặc xóa) công cụ NSProcessInfo đăng ký để tự động chấm dứt chưa?
Cajunluke

Không có đã không thử điều đó, nên làm việc trong trường hợp này. Nhưng câu hỏi này nằm ngoài TextEdit. Đây là một câu hỏi về việc chúng ta có thể giải quyết vấn đề này với sự can thiệp ở cấp mã nguồn của nhà phát triển. Vì chúng tôi sẽ không luôn có quyền truy cập vào mã nguồn cho các ứng dụng hỗ trợ Tự động chấm dứt.
MrDaniel

1
"Đây là cách Apple hoạt động" chỉ là không có thật. Đây là một tính năng mới, không được quảng cáo tốt ở đó. Từ Táo Docs, thậm chí không rõ những gì cần thiết cho HĐH để Tự động chấm dứt chương trình. Và Apple không quảng cáo điều này cũng như không đề cập đến nó trên trang tính năng Lion cho người dùng cuối. Tôi nghĩ rằng một cái gì đó mới của Apple đang cố gắng. Nếu người dùng cuối không thích điều này, họ nên nói với Apple và Nhà phát triển để họ có thể làm cho nó tốt hơn.
MrDaniel

Câu trả lời:


14

Mong muốn của bạn là lệnh Terminal của tôi ;-)

defaults write -g NSDisableAutomaticTermination -bool yes

Lưu ý rằng vì Tự động chấm dứt không thực sự thoát khỏi các ứng dụng, nhưng thay vào đó ẩn chúng, chúng phải được thoát đúng cách để điều này có hiệu lực.


2
Tuyệt vời, tốt tìm thấy người dùng 22760. Đã thử nó như đã lưu ý ở trên và nó hoạt động, cảm ơn. Trường hợp thử nghiệm của TextEdit.app không còn tự động chấm dứt sau khi chạy mặc định ... và sau đó mở và sau đó thoát TextEdit. Khi mở lại TextEdit, nó sẽ không còn tự động xác định khi không có cửa sổ mở và chạy trong nền.
MrDaniel

Hấp dẫn. Sau khi thử lệnh này, nó thực sự hoạt động. Tuy nhiên, cố gắng hoàn tác nó đã được chứng minh là khó khăn hơn. mặc định ghi -g NSDisableAutomaticTermination -bool no, hoặc false hoặc xóa khóa không có hiệu lực và các ứng dụng sẽ không tự động chấm dứt
DrFloyd5

Lệnh thần kỳ này hoạt động với tôi trên Mavericks! Nó có hiệu lực khi quay trở lại phiên hoặc khi mở một phiên mới.
Nicolas Barbulesco

Cảm ơn rất nhiều vì đã thêm hướng dẫn để khởi chạy và tự thoát khỏi ứng dụng và sau đó khởi chạy lại để thấy hiệu quả đúng cách!
jtheletter 4/12/2015

1

Có một cách chắc chắn để khắc phục điều này, nếu phần cứng của bạn hỗ trợ nó. Bạn có thể nâng cấp từ Mac OS X 10.7 (Lion) lên Mac OS X 10.6 (Snow Leopard).

Mặc dù không phải tất cả phần cứng chạy Lion đều có thể hỗ trợ hệ điều hành cải tiến này (đáng buồn là MacBook Air giữa năm 2011 của tôi không có), nó bao gồm các tính năng như không tự động chấm dứt, Rosetta (cho phép bộ xử lý Intel chạy phần mềm được biên dịch cho PPC bộ xử lý) và khả năng tương thích với các tính năng ghi trên mỗi ứng dụng trong Studio WireTap tuyệt vời.

Như với bất kỳ nâng cấp nào, một số tính năng bị mất (chẳng hạn như Mission Control , Launch Pad , một số cử chỉ) và một số yêu cầu hệ điều hành đã quen với một số (ví dụ, hướng cuộn bị đảo ngược), nhưng tất cả, đó là một nâng cấp tốt.


2
Điểm hay, nhưng đối với hầu hết người dùng, Auto Termination không đáng để quay trở lại với Snow Leopard, đó chỉ là một phiền toái nhỏ đối với một số người dùng, tôi không phải là một trong số họ.
MrDaniel

1
Đó là một giải pháp cực kỳ, chắc chắn, nhưng đây là một trong nhiều cách mà Snow Leopard vượt trội hơn Lion. Hiệu ứng tích lũy của chúng có thể khiến ai đó muốn Snow Leopard. Điều đó nói rằng, tôi chỉ đang học cách sống với nó, vì các tính năng khác của Lion (đặc biệt liên quan đến iCloud) khiến nó đáng để đưa ra những nhược điểm.
Daniel

Câu hỏi là về Lion.
Graham Perrin

1
@GrahamPerrin vậy là câu trả lời của tôi. Quan điểm của tôi là đây là một trong nhiều điều mà Lion đã phá vỡ, và một giải pháp có thể là không điều hành Lion.
Daniel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.