此代码因 Semgentation Fault: 11 而失败,我不明白为什么
framework 'Cocoa'
framework 'CoreFoundation'
framework 'Security'
* keychainObject = Pointer.new_with_type('^{OpaqueSecKeychainRef}')
SecKeychainOpen("/Users/charbon/Library/Keychains/Josja.keychain",keychainObject)
SecKeychainLock(keychainObject)
我确定它与 keychainObject 类型有关,因为它有效(它锁定了默认钥匙串)。
SecKeychainLock(nil)
我使用 '^{OpaqueSecKeychainRef}' 作为指针类型,因为当我使用错误类型的指针时,调试器告诉我它所期望的。
我希望解决这个问题有助于掌握 macruby / cocoa 魔法。
作为参考,完整的输出是
cobalt:~ charbon$ macirb Desktop/test.rb
irb(main):001:0> framework 'Cocoa'
=> true
irb(main):002:0> framework 'CoreFoundation'
=> true
irb(main):003:0> framework 'Security'
=> true
irb(main):004:0> * keychainObject = Pointer.new_with_type('^{OpaqueSecKeychainRef}')
=> [#<Pointer:0x4007ac200>]
irb(main):005:0> SecKeychainOpen("/Users/charbon/Library/Keychains/Josja.keychain",keychainObject)
=> 0
irb(main):006:0> SecKeychainLock(keychainObject)
Segmentation fault: 11