To address your question: https://developer.apple.com/reference/foundation/data/1779823-withunsafemutablebytes
"Warning The byte pointer argument should not be stored and used outside of the lifetime of the call to the closure." Which is exactly what you are doing, hence the code is unsafe (no pun intended). Regards, Rien Site: http://balancingrock.nl Blog: http://swiftrien.blogspot.com Github: http://github.com/Balancingrock Project: http://swiftfire.nl - A server for websites build in Swift > On 28 Apr 2017, at 01:38, Rick Mann <rm...@latencyzero.com> wrote: > > >> On Apr 27, 2017, at 01:48 , Alex Blewitt <alb...@apple.com> wrote: >> > ... > >> The let constant may not even be stored in a single place; if it's known to >> be constant it can be in-lined at the point of use and potentially unpacked >> and dead code elimination throw away the unused members, for example. >> >> If you want to pass in a let constant into the pointer, you can create a >> copy of it locally in a local variable and then use that instead. However >> this will be in the local scope, so the pointer isn't valid after it returns. > > Ah, so this brings up another issue, then. Many of the calls in the C library > take a pointer to some memory and hang on to it, filling it in at a later > point (they make network requests). I've been doing it like this, and it's > been working, but I wonder if this is fragile: > > class > MyClass > { > func > execute() > { > self.dataBuffer = Data(count: kLGSImageDataSize) > precondition(self.dataBuffer != nil, "Unable to allocate image buffer > (\(kLGSImageDataSize) bytes)") > > var params = c_library_params_t() > params.data_capacity = self.dataBuffer!.count > > self.dataBuffer?.withUnsafeMutableBytes > { (inBuffer) -> Void in > // This call returns immediately, but assumes > // it can write to inBuffer later… > > self.request = c_library_call(¶ms, inBuffer) > } > > if self.request == nil > { > // Error > } > } > > var dataBuffer: Data? > } > > > -- > Rick Mann > rm...@latencyzero.com > > _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users