【SwiftUI】Button系のlabelをTextにするとメモリリークする問題

## 追記
- 日本語か、もしくはアルファベットでも10文字以上だと発生

## 環境
- MacOS Big Sur
- Xcode 13.1
- Swift5

## GitHub
https://github.com/yuskey38/SwiftUI-MVVM-Login

## 現象

```swift
struct LoginView: View {
    @ObservedObject private var viewModel: LoginViewModel

    init(viewModel: LoginViewModel) {
        self.viewModel = viewModel
    }

    var body: some View {
        VStack {
            Text(viewModel.invalidMessage)
                .foregroundColor(.red)
                .accessibility(identifier: "loginInvalidMessage")
            TextField("Eメール", text: $viewModel.email)
                .textFieldStyle(.roundedBorder)
                .autocapitalization(.none)
                .padding()
                .accessibility(identifier: "loginEmailTextField")
            SecureField("パスワード", text: $viewModel.password)
                .textFieldStyle(.roundedBorder)
                .autocapitalization(.none)
                .padding()
                .accessibility(identifier: "loginPasswordSecureField")

            // これがメモリリークする
            Button(action: {}) {
                Text("ログイン")
                    .frame(maxWidth: .infinity)
                    .padding()
                    .foregroundColor(.white)
                    .background(Color(.orange))
                    .cornerRadius(24)
                    .padding()
                    .accessibility(identifier: "loginButton")
            }

            // 追記: これもメモリリークする
            NavigationLink(destination: signUpView) {
                Text("新規登録")
                    .frame(maxWidth: .infinity)
                    .padding()
                    .foregroundColor(.white)
                    .background(Color(.orange))
                    .cornerRadius(24)
                    .padding()
                    .accessibility(identifier: "toSignUpButton")
            }
        }
    }
}
```

文字を入れるとメモリリークする

```swift
Button(action: {}) {
    Text("ログイン")
        .frame(maxWidth: .infinity)
        .padding()
        .foregroundColor(.white)
        .background(Color(.orange))
        .cornerRadius(24)
        .padding()
        .accessibility(identifier: "loginButton")
}
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263661/35a8e8b8-96f5-2e6b-b1fb-a7b73745e753.png)


空文字だとメモリリークしない

```swift
Button(action: {}) {
    Text("")
        .frame(maxWidth: .infinity)
        .padding()
        .foregroundColor(.white)
        .background(Color(.orange))
        .cornerRadius(24)
        .padding()
        .accessibility(identifier: "loginButton")
}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263661/ffbda271-6751-b271-cac1-695644a49880.png)

## やったこと

TextではなくImageを使うとメモリリークしなくなった。
さすがにおかしいので何か知っている方いらっしゃれば教えてください。

追記: 10文字未満のアルファベットを指定するとメモリリークしなくなったのでひとまず日本語を使わなければ大丈夫そう

```swift
Button(action: {}) {
    Image(systemName: "hand.thumbsup.fill")
}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263661/6e26ac6d-5d5a-7dd5-2d9d-1ca040ccf077.png)

```swift
Button(action: { viewModel.didTapLoginButton.send() }) {
    Text("Login")
        .padding()
        .foregroundColor(.white)
        .background(Color(.orange))
        .cornerRadius(24)
        .padding()
        .opacity(viewModel.isLoginEnabled ? 1 : 0.5)
        .accessibility(identifier: "loginButton")
}.disabled(!viewModel.isLoginEnabled)
```