Weapons System best practice?

I’m making a weapons inventory system for a first person shooter game.
So I was wondering which is better practice:

A: Spawn all carried weapons as persistent actors and switch functionality/visibility between them.

B: Spawn only the selected weapon and destroy it when player selects different weapon.

Both solutions work. Which one is more efficient probably depends on how many weapon types there are and how likely the player is to switch between them.

How do you handle the inventory display? Personally, I usually store all inventory objects as, well, objects with the player, simply because I needed their icon and description for the inventory display anyway. Never had any problem with that, though now that I think of it the characters always had a very limited inventory.

I’m busy reworking my inventory, but basically, Ive been storing a WeaponID enum with an Ammo integer, then on selection spawn a Weapon Actor using the stored data.

For my display I have an Inventory Data actor for each WeaponID, that contains UI data (such as image and description) for that weapon type.
That way I dont need all my weapon actors to contain UI data.

Now with 4.9 I can just get class defaults of that InventoryData actor by running a select on WeaponID, and not actually having to spawn an actor…

Like I said, Im busy reworking it, so I can maybe clean things up a little more.

Thats why I was wondering if destroying the weapon actor on selection and spawning a new one is bad practice because of the way unreal handles garbage collection or something like that…