Contains a buffer object, and provides access to an instance of Header
and contiguous storage for an arbitrary number of Element
instances stored in that buffer.
SDK
- Xcode 6.3+
Framework
- Swift Standard Library
Declaration
@frozen struct ManagedBufferPointer<Header, Element>
Overview
For most purposes, the Managed
class works fine for this purpose, and can simply be used on its own. However, in cases where objects of various different classes must serve as storage, Managed
is needed.
A valid buffer class is non-@objc
, with no declared stored properties. Its deinit
must destroy its stored Header
and any constructed Element
s.
Example Buffer Class
class MyBuffer<Element> { // non-@objc
typealias Manager = ManagedBufferPointer<(Int, String), Element>
deinit {
Manager(unsafeBufferObject: self).withUnsafeMutablePointers {
(pointerToHeader, pointerToElements) -> Void in
pointerToElements.deinitialize(count: self.count)
pointerToHeader.deinitialize(count: 1)
}
}
// All properties are *computed* based on members of the Header
var count: Int {
return Manager(unsafeBufferObject: self).header.0
}
var name: String {
return Manager(unsafeBufferObject: self).header.1
}
}