mardi 5 mai 2015

Is this system object pointer code at all possible in Swift?

I was pointed to this objc snippet from WWDC 14, but I work on a Swift project.

CMIOObjectPropertyAddress   prop    = {
    kCMIOHardwarePropertyAllowScreenCaptureDevices,
    kCMIOObjectPropertyScopeGlobal,
    kCMIOObjectPropertyElementMaster
};
UInt32                      allow   = 1;

CMIOObjectSetPropertyData(kCMIOObjectSystemObject, &prop, 0, NULL, sizeof(allow), &allow);

I then tried rewriting to Swift:

var prop : CMIOObjectPropertyAddress {
    kCMIOHardwarePropertyAllowScreenCaptureDevices
    kCMIOObjectPropertyScopeGlobal
    kCMIOObjectPropertyElementMaster
}

var allow:UInt32 = 1
CMIOObjectSetPropertyData(kCMIOObjectSystemObject, &prop, 0, nil, sizeof(UInt32), &allow)

But it doesn't even validate. I don't know how to translate the CMIOObjectPropertyAddress struct. Xcode says

/Users/mortenjust/Dropbox/hack/learning/screenrec/screenrec/deleteme.swift:32:61: Cannot assign to a get-only property 'prop'

Aucun commentaire:

Enregistrer un commentaire