### Improvements

*   iOS/IL2CPP: Load embedded resource files as memory mapped read-only files so that they do not contribute to memory pressure.

### Fixes

*   (695118), (701548) - iOS/IL2CPP: Add support for PreserveAttribute to prevent classes, methods, fields and properties from being stripped in IL2CPP.
*   (695179) - iOS/IL2CPP: Fixed a crash which occurred when Ldvirtftn opcode was used on a non-virtual method.
*   ([694436](http://issuetracker.unity3d.com/issues/il2cpp-produces-invalid-code-with-emgu-dot-cv-plugin)) - iOS/IL2CPP: Fixed IL2CPP generated code in if (...) block if the condition operand was an IntPtr.
*   (694436) - iOS/IL2CPP: Fixed IL2CPP generated marshaling code for marshaling IntPtr into any other primitive type.
*   ([702879](http://issuetracker.unity3d.com/issues/il2cpp-modifying-non-primitive-value-types-from-native-code-doesnt-work)) - iOS/IL2CPP: Fixed marshaling arrays of structs marked with \[Out\] attribute.
*   ([696986](http://issuetracker.unity3d.com/issues/constructor-for-nullable-types-fails-to-instantiate-object-in-il2cpp)) - iOS/IL2CPP: Fixed ConstructorInfo.Invoke() returning null for Nullable types.
*   ([698589](http://issuetracker.unity3d.com/issues/il2cpp-ios-builds-cant-send-or-receive-rpcs)) - iOS/IL2CPP: Corrected RPC implementation for the UnityEngine.Networking namespace.
*   (696187) - iOS/IL2CPP: Prevent a C++ compiler error in generated code about an undeclared identifier with the test "Unused local just for stack balance".
*   (702696) - iOS/IL2CPP: Prevent a runtime exception with IL code in an enumerator's MoveNext method when the enumerator's return type is a constrained generic type.
*   (703294) - iOS/IL2CPP: Prevent an exception during code generation when the default value of a field is not the same type as the field.
*   ([691008](http://issuetracker.unity3d.com/issues/custom-text-outline-causes-failure-to-build)) - iOS/IL2CPP: When compiling scripts for the player, appropriate UnityEngine.UI.dll will be referenced.
*   (691404) - iOS/IL2CPP: Fixed a rare case when bytecode stripper would incorrectly strip wrong overloaded generic virtual method.