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 
> <mailto:swift-users@swift.org>> wrote:
> How about using:
> 
> UnsafeMutablePointer<TypeOfSelf>
> 
> ?
> 
> Regards,
> Rien
> 
> Site: http://balancingrock.nl <http://balancingrock.nl/>
> Blog: http://swiftrien.blogspot.com <http://swiftrien.blogspot.com/>
> Github: http://github.com/Swiftrien <http://github.com/Swiftrien>
> Project: http://swiftfire.nl <http://swiftfire.nl/>
> 
> 
> 
> 
> > On 16 Dec 2016, at 09:10, Richard Wei via swift-users 
> > <swift-users@swift.org <mailto: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 
> >> <mailto: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 <mailto: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 <mailto:swift-users@swift.org>
> >> https://lists.swift.org/mailman/listinfo/swift-users 
> >> <https://lists.swift.org/mailman/listinfo/swift-users>
> >>
> >>
> >
> > _______________________________________________
> > swift-users mailing list
> > swift-users@swift.org <mailto:swift-users@swift.org>
> > https://lists.swift.org/mailman/listinfo/swift-users 
> > <https://lists.swift.org/mailman/listinfo/swift-users>
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org <mailto:swift-users@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-users 
> <https://lists.swift.org/mailman/listinfo/swift-users>
> 

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to