dotnet / dotnet/macios

`MutableCopy` on subclasses of `NSObject` don't return the NSMutable* variant

Open
#6,964 9 comments 0 reactions 0 assignees View on GitHub
enhancement iOS macOS
Dominant language
C#
Stars
2.9k
Forks
576
Avg merge
2d 12h
Merged PRs (30d)
123

Description

### Steps to Reproduce

n/a

### Expected Behavior

When asking any `NSDictionary` instance to return a `MutableCopy`, I would expect it to return an `NSMutableDictionary`. The same goes:

- `NSArray`.`MutableCopy` returns `NSMutableArray`
- `NSAttributedString`.`MutableCopy` returns `NSMutableAttributedString`
- `NSData`.`MutableCopy` returns `NSMutableData`
- `NSOrderedSet`.`MutableCopy` returns `NSMutableOrderedSet`
- `NSSet`.`MutableCopy` returns `NSMutableSet`
- `NSString`.`MutableCopy` returns `NSMutableString`
- `NSUrlRequest`.`MutableCopy` returns `NSMutableUrlRequest`

### Actual Behavior

All of them return an `NSObject` when calling `MutableCopy`.

### Environment

```
=== Visual Studio Community 2019 for Mac ===

Version 8.2.5 (build 5)
Installation UUID: a14aece2-e2ce-41b7-8fc7-f8c6e55b90cc
GTK+ 2.24.23 (Raleigh theme)
Xamarin.Mac 5.14.0.85 (d16-2-fix-mac-updates / 86973979)

Package version: 600000327

=== Mono Framework MDK ===

Runtime:
Mono 6.0.0.327 (2019-02/f8ea05bddcb) (64-bit)
Package version: 600000327

=== NuGet ===

Version: 5.1.0.6013

=== .NET Core ===

Runtime: /usr/local/share/dotnet/dotnet
Runtime Versions:
2.2.6
2.2.2
2.1.12
2.1.11
2.1.9
2.1.8
2.1.7
SDK: /usr/local/share/dotnet/sdk/2.2.401/Sdks
SDK Versions:
2.2.401
2.2.104
2.1.701
2.1.700
2.1.505
2.1.504
2.1.503
MSBuild SDKs: /Library/Frameworks/Mono.framework/Versions/6.0.0/lib/mono/msbuild/Current/bin/Sdks

=== Xamarin.Profiler ===

Version: 1.6.11
Location: /Applications/Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler

=== Updater ===

Version: 11

=== Xamarin.Android ===

Version: 9.4.1.0 (Visual Studio Community)
Commit: xamarin-android/d16-2/ebd65c9
Android SDK: /Users/hindrik/Library/Developer/Xamarin/android-sdk-macosx
Supported Android versions:
8.1 (API level 27)

SDK Tools Version: 26.1.1
SDK Platform Tools Version: 28.0.0
SDK Build Tools Version: 27.0.3

Build Information:
Mono: mono/mono/2019-02@e6f5369c2d2
Java.Interop: xamarin/java.interop/d16-2@d64ada5
LibZipSharp: grendello/LibZipSharp/d16-2@caa0c74
LibZip: nih-at/libzip/rel-1-5-1@b95cf3f
ProGuard: xamarin/proguard/master@905836d
SQLite: xamarin/sqlite/3.27.1@8212a2d
Xamarin.Android Tools: xamarin/xamarin-android-tools/d16-2@6f6c969

=== Microsoft Mobile OpenJDK ===

Java SDK: /Users/hindrik/Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_8.0.25
1.8.0-25
Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL

=== Android Device Manager ===

Version: 1.2.0.60
Hash: 686c817
Branch: remotes/origin/d16-2
Build date: 2019-08-07 15:49:58 UTC

=== Xamarin Inspector ===

Version: 1.4.3
Hash: db27525
Branch: 1.4-release
Build date: Mon, 09 Jul 2018 21:20:18 GMT
Client compatibility: 1

=== Apple Developer Tools ===

Xcode 10.3 (14492.2)
Build 10G8

=== Xamarin.Mac ===

Version: 5.14.0.114 (Visual Studio Community)
Hash: c6691164
Branch: d16-2
Build date: 2019-07-29 15:54:06-0400

=== Xamarin.iOS ===

Version: 12.14.0.114 (Visual Studio Community)
Hash: c6691164
Branch: d16-2
Build date: 2019-07-29 15:54:05-0400

=== Xamarin Designer ===

Version: 16.2.0.379
Hash: 3f0652957
Branch: remotes/origin/d16-2
Build date: 2019-08-01 17:32:50 UTC

=== Build Information ===

Release ID: 802050005
Git revision: 94d90d630b6c7876d1d5298730d14ec97bbde3f9
Build date: 2019-08-22 21:31:34+00
Build branch: release-8.2
Xamarin extensions: 1cf04a6621fb6629226ea0285028954d6196e93f

=== Operating System ===

Mac OS X 10.14.6
Darwin 18.7.0 Darwin Kernel Version 18.7.0
Thu Jun 20 18:42:21 PDT 2019
root:xnu-4903.270.47~4/RELEASE_X86_64 x86_64

```

### Build Logs

n/a

### Example Project (If Possible)

n/a

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.