Removed `assign` property attributes

- Replaced `assign` property attributes by `weak` where needed
- Removed `assign` altogether where appropriate

Other cosmetic changes:
- Replaced some `- (id)init` to `- (instancetype)init`
- Replaced some `_object` by `self.object`