Always use pointers with UObjects. (UObject* Test = nullptr) or its TObjectPtr variant.
The garbage collector automatically nulls these pointers when it collects the garbage objects. You can easily check them for nullptr or call IsValid. You want to avoid working with references that can become invalid (undefined behavior).
Arrays do not shrink automatically when pointers inside them null.
outside pointers to elements inside an array become invalid when elements are added / removed in array.
You should create an array of uobject pointers on the manager class. When you want to remove one of those uobjects, remove them through the manager so that the element is removed from its array before it starts to be destroyed. Then you don’t need to think about manually cleaning up nullptrs and such.