what's the purpose of "--no-use-binaries" in carthage

Sometimes the prebuilt frameworks are corrupted in the dependencies’ project, so you need to build them locally.

Also, those prebuilt frameworks don’t support step-by-step debugging, so unless you build them locally, you won’t be able to use this feature with your dependencies.

Using --no-use-binaries compiles the projects locally, using your compiler.

Executing the update command might occasionally produce an error when the Swift language updates to a newer version while the dependency is built for an older version of Swift (even if it’s still compatible). You can solve such scenarios by using this flag.

One disadvantage is that it takes longer to compile the project with the --no-use-binaries flag. Without the flag, you’re requesting the prebuilt framework if it’s available. For more information you can see this Carthage issue on GitHub.

Hope I cleared up your doubts.