It’s not the correct choice here :) > On Dec 16, 2016, at 03:04, Rien <[email protected]> wrote: > > Just because it is called “Unsafe” does not mean it is unsafe :-) > It all depends on how you use it. > > Regards, > Rien > > Site: http://balancingrock.nl > Blog: http://swiftrien.blogspot.com > Github: http://github.com/Swiftrien > Project: http://swiftfire.nl > > > > >> On 16 Dec 2016, at 09:52, Richard Wei <[email protected]> wrote: >> >> Zhao, it’s not a class. >> >> Rien, unsafe pointers is the last thing I would ever want to introduce in my >> library… >> >> Capturing self was clean, working perfectly, until Swift 3.0.2. >> >> -Richard >> >>> On Dec 16, 2016, at 02:49, Zhao Xin <[email protected]> wrote: >>> >>> What is the type of self? If it is a class, try [unowned self]. >>> >>> Zhaoxin >>> >>> >>> >>> >>> >>> >>> On Fri, Dec 16, 2016 at 4:33 PM, Rien via swift-users >>> <[email protected]> wrote: >>> How about using: >>> >>> UnsafeMutablePointer<TypeOfSelf> >>> >>> ? >>> >>> Regards, >>> Rien >>> >>> Site: http://balancingrock.nl >>> Blog: http://swiftrien.blogspot.com >>> Github: http://github.com/Swiftrien >>> Project: http://swiftfire.nl >>> >>> >>> >>> >>>> On 16 Dec 2016, at 09:10, Richard Wei via swift-users >>>> <[email protected]> wrote: >>>> >>>> Capturing makes it immutable, which unfortunately can't solve this problem. >>>> >>>> -Richard >>>> >>>>> On Dec 16, 2016, at 02:05, Zhao Xin <[email protected]> wrote: >>>>> >>>>> I did not test the code. But if you cannot implicitly capture a mutating >>>>> self, you should do it explicitly, right? >>>>> >>>>> let blockSize = min(512, count) >>>>> let blockCount = (count+blockSize-1)/blockSize >>>>> device.sync { [self] () -> () in // Launch CUDA kernel >>>>> try! fill<<<(blockSize, blockCount)>>>[ >>>>> .pointer(to: &self), .value(value), .value(Int64(count)) >>>>> ] >>>>> } >>>>> >>>>> Hope above code works. >>>>> >>>>> Zhaoxin >>>>> >>>>> On Fri, Dec 16, 2016 at 3:46 PM, Richard Wei via swift-users >>>>> <[email protected]> wrote: >>>>> Hi, >>>>> >>>>> Swift 3.0.2 seems to have broken my code due to mutating self capture. >>>>> But I have to pass inout self to the closure. Any workaround? >>>>> >>>>> let blockSize = min(512, count) >>>>> let blockCount = (count+blockSize-1)/blockSize >>>>> device.sync { // Launch CUDA kernel >>>>> try! fill<<<(blockSize, blockCount)>>>[ >>>>> .pointer(to: &self), .value(value), .value(Int64(count)) >>>>> ] >>>>> } >>>>> >>>>> <PastedGraphic-1.png> >>>>> >>>>> -Richard >>>>> >>>>> _______________________________________________ >>>>> swift-users mailing list >>>>> [email protected] >>>>> https://lists.swift.org/mailman/listinfo/swift-users >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> swift-users mailing list >>>> [email protected] >>>> https://lists.swift.org/mailman/listinfo/swift-users >>> >>> _______________________________________________ >>> swift-users mailing list >>> [email protected] >>> https://lists.swift.org/mailman/listinfo/swift-users >>> >> >
_______________________________________________ swift-users mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-users
