[iOS] WeakNSObject assignment is consistent with copy constructor

The copy constructor was changed (in CL
https://codereview.chromium.org/853503002/) to allow a WeakNSObject to
be copied on a different thread.
This CL is making the assignment operator behave consistently with the
copy constructor: it is now allowed to assign a WeakNSObject on a
different thread.

In any case, dereferencing the WeakNSObject on another thread remains
disallowed.

BUG=394008

Review URL: https://codereview.chromium.org/1014813002

Cr-Commit-Position: refs/heads/master@{#320915}
diff --git a/base/ios/weak_nsobject.h b/base/ios/weak_nsobject.h
index a1984bb..fc3a7c3 100644
--- a/base/ios/weak_nsobject.h
+++ b/base/ios/weak_nsobject.h
@@ -117,7 +117,9 @@
   }
 
   WeakNSProtocol& operator=(const WeakNSProtocol<NST>& that) {
-    DCHECK(checker_.CalledOnValidThread());
+    // A WeakNSProtocol object can be copied on one thread and used on
+    // another.
+    checker_.DetachFromThread();
     container_ = that.container_;
     return *this;
   }