Tôi muốn thiết lập một cái gì đó như thế này trong môi trường của tôi.Làm thế nào để trampoline từ một thông báo Cocoa để gọi con trỏ chức năng c?
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self
forKeyPath:[@"values." stringByAppendingString: @"MyPreference"]
options:NSKeyValueObservingOptionNew
context:NULL];
Tôi đang làm điều này từ môi trường Smalltalk. Các Smalltalk cụ thể thực sự có thể lái xe ở trên thông qua các tính năng thời gian chạy mục tiêu-c. Vấn đề là "tự" ở đó là đối số addObserver:
. Từ Smalltalk, tôi có thể tạo một con trỏ hàm C sẽ hoạt động như một cuộc gọi lại trong Smalltalk. Nhưng nó không thể đưa ra khái niệm về Object là gì đối với môi trường ObjectiveC.
Vì vậy, tôi đang cố gắng tìm hiểu làm thế nào để trampoline từ một số loại đối tượng với API thích hợp gây ra con trỏ hàm tôi tạo ra được thực hiện. Tôi đã xem NSInvokation
và bạn bè, nhưng không ai trong số đó được sử dụng để quấn quanh một con trỏ hàm C. Và tôi không chắc chắn họ sẽ dịch các addObserver:forKeyPath:options:context:
để làm điều đúng.
Đun sôi câu hỏi là, làm cách nào bạn sử dụng các đối tượng Cocoa hiện có để đăng ký phản hồi cho Thông báo là thực thi con trỏ hàm C mà không biên dịch bất kỳ mã objc mới nào.
Thật không may điều đó không giúp tôi được Justin. Tôi không thể tạo các lớp ObjC mới. Chỉ cần sử dụng những cái hiện có mà thời gian chạy objc sẽ hiển thị. –
@Travis ah! tôi đã không nhận ra đó cũng là hạn chế. – justin