NSApplication cho phép bạn thiết lập một đại biểu cho ứng dụng của bạn. Nếu người dùng kéo tệp vào biểu tượng dock của bạn, NSApplication sẽ gọi phương thức
- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
đối tượng đại biểu của bạn, trong trường hợp nó thực hiện bất kỳ phương pháp nào như vậy. Trong trường hợp nội dung không thực sự là tệp (ví dụ: nếu người dùng chỉ chọn văn bản trong ứng dụng và kéo nó vào biểu tượng đế), phương thức ủy quyền
- (BOOL)applicationOpenUntitledFile:(NSApplication *)theApplication
được gọi.
Xem NSApplication class reference
Về cơ bản bạn chỉ có thể tạo ra bất kỳ đối tượng của bất cứ loại nào (ví dụ một đơn giản mà chỉ thừa hưởng của NSObject), xác định hai phương pháp trên trong đối tượng và sau đó bất cứ nơi nào trong đầu của bạn lên quy tắc ứng ứng dụng bạn làm
whatever = [[YourObject alloc] init];
[[NSApplication sharedApplication] setDelegate:whatever];
Và đó là nó. Ngay sau khi một tập tin hoặc một số nội dung khác được thả vào biểu tượng dock, phương thức thích hợp được gọi và phải xử lý yêu cầu đó. BTW cùng các phương thức được gọi nếu ứng dụng của bạn liên kết với một loại tệp (ví dụ: myFileType) và người dùng nhấp đúp vào một tệp có phần mở rộng đó trong Trình tìm kiếm.
Điều thực sự xảy ra đằng sau hậu trường là Dịch vụ khởi chạy sẽ gửi ứng dụng của bạn cho sự kiện Apple "mở tài liệu" ('odoc'). NSApplication theo mặc định đăng ký một xử lý cho sự kiện này và chuyển tiếp yêu cầu bằng cách gọi phương thức ủy nhiệm thích hợp. Bạn cũng có thể nghe trực tiếp sự kiện Apple này mà tôi đoán, nhưng tại sao bạn? Đối phó với sự kiện Apple trực tiếp là khó xử. Khi ứng dụng của bạn không phải là Cocoa, nhưng Carbon (plain-C), bạn có thể phải trực tiếp xử lý Sự kiện Apple (tôi không quen với Carbon), nhưng trong Cocoa Apple đã nắm bắt được các sự kiện quan trọng nhất của Apple cho bạn và chuyển đổi chúng vào các cuộc gọi hoặc thông báo đại diện mà ứng dụng của bạn có thể nghe.
Tôi không nghĩ rằng bạn có thể sử dụng Cocoa và C#.Tôi chỉ biết các ràng buộc Cocoa từ Ruby, Python và Objective-C (với Objective-C là hỗ trợ tốt nhất, từ sự hiểu biết của tôi). Trong khi bạn có thể viết các ứng dụng OS X bằng C# với Mono, tôi không nghĩ rằng bạn có thể sử dụng Cocoa từ C#. – Andy
Tìm kiếm Cocoa # Andy. –