Hi David,

Are padding or spacing computed properties that access either rectangle? They 
aren't defined in your stripped down code. For example:

var spacing: CGFloat {
    return imageRect.maxX
}

Without doing something like that, I don't see the same access conflicts that 
you're seeing.

-Kyle

> On Jul 27, 2017, at 5:04 AM, David Hart via swift-users 
> <swift-users@swift.org> wrote:
> 
> Hello,
> 
> In Xcode 9 beta 4, Swift 4, I’m getting runtime errors popping up for 
> Simultaneous accesses and I think they may be false negatives. Here’s a 
> stripped down version of my code:
> 
> class MyButton: UIButton {
>       fileprivate var imageRect: CGRect = .zero
>       fileprivate var titleRect: CGRect = .zero
> 
>         func updateRects() {
>             if imageBeforeTitle {
>                 layoutHorizontally(leftRect: &imageRect, rightRect: 
> &titleRect)
>             } else {
>                 layoutHorizontally(leftRect: &titleRect, rightRect: 
> &imageRect)
>             }
>         }
> 
>         func layoutHorizontally(leftRect: inout CGRect, rightRect: inout 
> CGRect) {
>             leftRect.origin.x = padding
>             rightRect.origin.x = leftRect.maxX + spacing
>         }
> }
> 
> While the layoutHorizontally method has two CGRect inout parameters, never in 
> my code do I pass the same CGRect. Any ideas if this is a bug I should post 
> on bugs.swift.org <http://bugs.swift.org/> or if I’m missing something?
> 
> David.
> _______________________________________________
> 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

Reply via email to