[swift-users] Why does withUnsafePointer(to:) require a var argument?

Rien Rien at Balancingrock.nl
Thu Apr 27 01:37:27 CDT 2017


1) When you obtain a pointer, it can no longer be ensured by the compiler that you won’t write to it.
2) A ‘let’ variable (constant) allows way more optimizations than a ‘var’. I would not be surprised if the majority of ‘let’ constants never see any memory allocation at all.

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 27 Apr 2017, at 08:31, Florent Bruneau via swift-users <swift-users at swift.org> wrote:
> 
> Hi Rick,
> 
> My understanding on this is that withUnsafePointer() requires an inout argument because it has to take a reference to the variable in order to be able to derive its pointer. The languages requires inout arguments to be vars, leading to withUnsafePointer() requiring the passed object to be a var.
> 
> There may be other subtleties I'm not aware of, though.
> 
>> Le 27 avr. 2017 à 02:42, Rick Mann via swift-users <swift-users at swift.org> a écrit :
>> 
>> We have withUnsafePointer(to:) and withUnsafeMutablePointer(to:). Why does the first take an inout parameter? The function names imply that the first will not modify the pointer (which I take to mean its contents), and it makes it quite clunky to pass in constant things.
>> 
>> -- 
>> Rick Mann
>> rmann at latencyzero.com
>> 
>> 
>> _______________________________________________
>> swift-users mailing list
>> swift-users at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
> 
> -- 
> Florent Bruneau
> 
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users



More information about the swift-users mailing list