ACF has a handy acf/load_field filter for programmatically filling the choices of field types like ‘Select’ that have multiple values.
This Pro tutorial provides an example of how to set the values of a Select-type field with the names and labels of all public post types in the site.

Notices how Choices are empty.
Now let’s use the acf/load_field filter to automatically populate the choices with public post types minus attachments and Bricks templates.
Result after implementing the tutorial:


Step 1
While it is possible to write code that references the field name (post_types in this example), I believe it is technically more accurate to use the field key.
On the field group page, click “Screen Options”.
Click “Field Keys” and note the key that now appears for your field.

Step 2
Add the following in child theme‘s functions.php (w/o the opening PHP tag) or a code snippets plugin:
<?php
// Populate the specified ACF custom field with names and values of all public CPTs in the site
add_filter( 'acf/load_field/key=field_65cb1a4394a77', function ( $field ) {
// Get all public CPTs
$args = [
'public' => true,
// '_builtin' => false
];
// names or objects, names is the default
$output = 'objects'; // We want this to be objects so we can get the labels and not just names
$post_types = get_post_types( $args, $output );
// Remove 'attachment' and 'bricks_template'
unset( $post_types['attachment'] );
unset( $post_types['bricks_template'] );
// Reset the choices array
$field['choices'] = [];
// Populate the field with the names as keys and labels as values
foreach ( $post_types as $post_type ) {
$field['choices'][ $post_type->name ] = $post_type->label;
}
return $field;
} );
Replace field_65cb1a4394a77 with the key of your select/checkbox etc. field.
That’s it. You can now see that choices in the field group as well as in the post editor will be populated with public CPTs registered in the site.
Reference
https://developer.wordpress.org/reference/functions/get_post_types/