I don't know what to make of all of this. This code isn't the right approach (although it likely isn't the cause of any reference cycles, eitther).
When you write code like this (which I assume is inside your view controller class):
weak var someobjectscene = SCNScene(named: "art.scnassets/SomeObject.dae")
you create a SCNScene object, and assign its only existing reference to a weak variable. IOW, nothing is keeping this scene object alive, and it is subject to deallocation at any time. When it does get deallocated, this will cascade down to all of the objects its owns, including 'someobject', which has no other strong reference, so it will deallocate too.
This doesn't fail for you because deallocations (typically) don't happen immediately, for reasons that are basically an implementation detail. In your case, the objects stay alive for "scene" to take a strong reference to "someobject" (when you addChildNode), and for the view to take a strong reference to "scene" (when you set the view's scene). At this point, everything you need is strapped down, and everything you don't need is subject to deallocation.
However, the fact that this (currently) works doesn't mean that the code is correct. You need to think hierarchically for object relationships like this. A parent should strongly reference its children (and therefore keep them alive). A child should weakly reference its parent (and therefore avoid a glaring reference cycle error). In the above code, you are dealing with only "down" (i.e. parent to child) references, so they should typically be strong variables.
There's a secondary issue, too, in that "someobjectscene" and "someobject" probably shouldn't be instance variables at all, since they're both temporary. The references need to be strong, but they don't need to persist after you've set up your real scene.
In regard to "viewDidDisappear", there's not enough context to know exactly what you intend, but on the face of it, your override's code is doing things that need to be done before any sequence of events could lead to viewDidDisappear being called. For example, removing a view controller from its parent view controller will cause its view to be removed from the view hierarchy, which will trigger viewDidDisappear. In addition, you probably shouldn't be calling removeFromParentViewController if you're about to call dismiss, since it seems to me that removeFromParentViewController is part of what dismiss is supposed to do.
So, I think you need to keep honing your skills about how to write code like this (look at sample apps, which will help you gauge when you are writing too much code), and I don't think the cause of your reference cycle is in any of this code.