MacRuby все еще не завершен - он просто не работает с некоторыми кодами ruby, с которыми я работаю.
Я столкнулся с той же проблемой NSData и смог создать экземпляр CFData, который выглядит нормально со следующим кодом
gem 'RubyInline'
require 'inline'
class CFDataWrapper
begin
inline do |builder|
builder.include "<CoreFoundation/CoreFoundation.h>"
builder.c_raw_singleton "
static VALUE fromString(int argc, VALUE *args){
CFDataRef d = CFDataCreate(NULL, RSTRING_PTR(args[0]), RSTRING_LEN(args[0]));
VALUE result;
char type = '@';
ocdata_to_rbobj(Qnil,&type, (const void *)&d, &result, false) ;
return result;
}
"
end
end
end
bytes = [128].pack('i1')
data = CFDataWrapper.fromString(bytes)
puts data.inspect
Вывод inspect отличается от 10.6, но я могу передать его обратно в методы, которые ожидают экземпляры NSData, и они, кажется, работают, вызывают методы NSData для него и т. Д. Помимо этого игрушечного скрипта он работает скрипт, который я использую для заполнения ядра документы данных, где один из объектов имеет двоичный атрибут данных