It’s not the correct choice here :) > On Dec 16, 2016, at 03:04, Rien <r...@balancingrock.nl> 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 <rxr...@gmail.com> 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 <owe...@gmail.com> 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 >>> <swift-users@swift.org> 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 >>>> <swift-users@swift.org> wrote: >>>> >>>> Capturing makes it immutable, which unfortunately can't solve this problem. >>>> >>>> -Richard >>>> >>>>> On Dec 16, 2016, at 02:05, Zhao Xin <owe...@gmail.com> 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 >>>>> <swift-users@swift.org> 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 >>>>> swift-users@swift.org >>>>> https://lists.swift.org/mailman/listinfo/swift-users >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> swift-users mailing list >>>> swift-users@swift.org >>>> https://lists.swift.org/mailman/listinfo/swift-users >>> >>> _______________________________________________ >>> swift-users mailing list >>> swift-users@swift.org >>> https://lists.swift.org/mailman/listinfo/swift-users >>> >> >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users