diff --git a/src/AddressBook/ABMultiValue.cs b/src/AddressBook/ABMultiValue.cs index 6001555370..0061587676 100644 --- a/src/AddressBook/ABMultiValue.cs +++ b/src/AddressBook/ABMultiValue.cs @@ -150,7 +150,7 @@ namespace AddressBook { get {return self.IsReadOnly;} } - IntPtr ToIntPtr (T value) + NativeHandle ToIntPtr (T value) { var mutable = self as ABMutableMultiValue; if (mutable is null) @@ -216,8 +216,8 @@ namespace AddressBook { #endif public class ABMultiValue : NativeObject, IEnumerable> { - internal Converter toManaged; - internal Converter toNative; + internal Converter toManaged; + internal Converter toNative; internal ABMultiValue (NativeHandle handle, bool owns) : this (handle, @@ -228,7 +228,7 @@ namespace AddressBook { throw new InvalidOperationException ("T must be an NSObject!"); } - internal ABMultiValue (NativeHandle handle, Converter toManaged, Converter toNative, bool owns) + internal ABMultiValue (NativeHandle handle, Converter toManaged, Converter toNative, bool owns) : base (handle, owns) { if (toManaged is null) @@ -320,7 +320,7 @@ namespace AddressBook { { } - internal ABMutableMultiValue (NativeHandle handle, Converter toManaged, Converter toNative) + internal ABMutableMultiValue (NativeHandle handle, Converter toManaged, Converter toNative) : base (handle, toManaged, toNative, false) { } diff --git a/src/AddressBook/ABPerson.cs b/src/AddressBook/ABPerson.cs index e67707f64c..6225f1141f 100644 --- a/src/AddressBook/ABPerson.cs +++ b/src/AddressBook/ABPerson.cs @@ -853,7 +853,7 @@ namespace AddressBook { } } - internal static string ToString (IntPtr value) + internal static string ToString (NativeHandle value) { return CFString.FromHandle (value)!; } @@ -863,9 +863,9 @@ namespace AddressBook { return CreateStringMultiValue (CopyValue (ABPersonPropertyId.Email)); } - static ABMultiValue? CreateStringMultiValue (IntPtr handle) + static ABMultiValue? CreateStringMultiValue (NativeHandle handle) { - if (handle == IntPtr.Zero) + if (handle == NativeHandle.Zero) return null; return new ABMultiValue (handle, ABPerson.ToString, CFString.CreateNative, true); } @@ -912,16 +912,16 @@ namespace AddressBook { } // Obsolete - static ABMultiValue? CreateDictionaryMultiValue (IntPtr handle) + static ABMultiValue? CreateDictionaryMultiValue (NativeHandle handle) { - if (handle == IntPtr.Zero) + if (handle == NativeHandle.Zero) return null; return new ABMultiValue (handle, true); } - static ABMultiValue? CreateDictionaryMultiValue (IntPtr handle, Func factory) where T : DictionaryContainer + static ABMultiValue? CreateDictionaryMultiValue (NativeHandle handle, Func factory) where T : DictionaryContainer { - if (handle == IntPtr.Zero) + if (handle == NativeHandle.Zero) return null; return new ABMultiValue (handle, @@ -935,9 +935,9 @@ namespace AddressBook { return CreateDateMultiValue (CopyValue (ABPersonPropertyId.Date)); } - static ABMultiValue? CreateDateMultiValue (IntPtr handle) + static ABMultiValue? CreateDateMultiValue (NativeHandle handle) { - if (handle == IntPtr.Zero) + if (handle == NativeHandle.Zero) return null; return new ABMultiValue (handle, true); } @@ -1087,7 +1087,7 @@ namespace AddressBook { if (people is null) throw new ArgumentNullException (nameof (people)); - var ptrs = new IntPtr [people.Length]; + var ptrs = new NativeHandle [people.Length]; for (int i = 0; i < people.Length; ++i) { ptrs[i] = people[i].Handle; } diff --git a/src/CoreAnimation/CADefs.cs b/src/CoreAnimation/CADefs.cs index 0b2986c2f8..bbba7323d6 100644 --- a/src/CoreAnimation/CADefs.cs +++ b/src/CoreAnimation/CADefs.cs @@ -36,6 +36,10 @@ using ObjCRuntime; using Foundation; using CoreGraphics; +#if !NET +using NativeHandle = System.IntPtr; +#endif + #nullable enable namespace CoreAnimation { @@ -47,7 +51,7 @@ namespace CoreAnimation { public partial class CAGradientLayer { #if NET - CGColor CreateColor (IntPtr p) + CGColor CreateColor (NativeHandle p) #else public CGColor CreateColor (IntPtr p) #endif @@ -66,7 +70,7 @@ namespace CoreAnimation { return; } - IntPtr [] ptrs = new IntPtr [value.Length]; + var ptrs = new NativeHandle [value.Length]; for (int i = 0; i < ptrs.Length; i++) ptrs [i] = value [i].Handle; diff --git a/src/CoreFoundation/CFArray.cs b/src/CoreFoundation/CFArray.cs index c0a1ff9b2d..d57f8547fc 100644 --- a/src/CoreFoundation/CFArray.cs +++ b/src/CoreFoundation/CFArray.cs @@ -76,7 +76,7 @@ namespace CoreFoundation { } } - internal static CFArray FromIntPtrs (params IntPtr[] values) + internal static CFArray FromIntPtrs (params NativeHandle[] values) { return new CFArray (Create (values), true); } @@ -96,16 +96,16 @@ namespace CoreFoundation { [DllImport (Constants.CoreFoundationLibrary)] internal extern static /* void* */ IntPtr CFArrayGetValueAtIndex (/* CFArrayRef */ IntPtr theArray, /* CFIndex */ nint idx); - public IntPtr GetValue (nint index) + public NativeHandle GetValue (nint index) { return CFArrayGetValueAtIndex (GetCheckedHandle (), index); } - internal static unsafe IntPtr Create (params IntPtr[] values) + internal static unsafe NativeHandle Create (params NativeHandle[] values) { if (values is null) ObjCRuntime.ThrowHelper.ThrowArgumentNullException (nameof (values)); - fixed (IntPtr* pv = values) { + fixed (NativeHandle* pv = values) { return CFArrayCreate (IntPtr.Zero, (IntPtr) pv, values.Length, @@ -113,7 +113,7 @@ namespace CoreFoundation { } } - public static unsafe IntPtr Create (params INativeObject[] values) + public static unsafe NativeHandle Create (params INativeObject[] values) { if (values is null) ObjCRuntime.ThrowHelper.ThrowArgumentNullException (nameof (values)); @@ -125,7 +125,7 @@ namespace CoreFoundation { return CFArrayCreate (IntPtr.Zero, (IntPtr) pv, c, kCFTypeArrayCallbacks_ptr); } - public static unsafe IntPtr Create (params string [] values) + public static unsafe NativeHandle Create (params string [] values) { if (values is null) ObjCRuntime.ThrowHelper.ThrowArgumentNullException (nameof (values)); @@ -154,35 +154,35 @@ namespace CoreFoundation { internal extern static void CFArrayGetValues (/* CFArrayRef */ IntPtr theArray, CFRange range, /* const void ** */ IntPtr values); // identical signature to NSArray API - static unsafe public string?[]? StringArrayFromHandle (IntPtr handle) + static unsafe public string?[]? StringArrayFromHandle (NativeHandle handle) { return ArrayFromHandleFunc (handle, CFString.FromHandle); } - static unsafe public string?[]? StringArrayFromHandle (IntPtr handle, bool releaseHandle) + static unsafe public string?[]? StringArrayFromHandle (NativeHandle handle, bool releaseHandle) { var rv = StringArrayFromHandle (handle); - if (releaseHandle && handle != IntPtr.Zero) + if (releaseHandle && handle != NativeHandle.Zero) CFObject.CFRelease (handle); return rv; } // identical signature to NSArray API - static public T?[]? ArrayFromHandle (IntPtr handle) where T : class, INativeObject + static public T?[]? ArrayFromHandle (NativeHandle handle) where T : class, INativeObject { var rv = ArrayFromHandleFunc (handle, DefaultConvert); return rv; } - static public T?[]? ArrayFromHandle (IntPtr handle, bool releaseHandle) where T : class, INativeObject + static public T?[]? ArrayFromHandle (NativeHandle handle, bool releaseHandle) where T : class, INativeObject { var rv = ArrayFromHandle (handle); - if (releaseHandle && handle != IntPtr.Zero) + if (releaseHandle && handle != NativeHandle.Zero) CFObject.CFRelease (handle); return rv; } - static T DefaultConvert (IntPtr handle) where T: class, INativeObject + static T DefaultConvert (NativeHandle handle) where T: class, INativeObject { if (handle != CFNullHandle) return Runtime.GetINativeObject (handle, false)!; @@ -190,9 +190,9 @@ namespace CoreFoundation { } // identical signature to NSArray API - static public T[]? ArrayFromHandleFunc (IntPtr handle, Func createObject) + static public T[]? ArrayFromHandleFunc (NativeHandle handle, Func createObject) { - if (handle == IntPtr.Zero) + if (handle == NativeHandle.Zero) return null; var c = (int) GetCount (handle); @@ -212,7 +212,7 @@ namespace CoreFoundation { return ret; } - static public T[]? ArrayFromHandleFunc (IntPtr handle, Func createObject, bool releaseHandle) + static public T[]? ArrayFromHandleFunc (NativeHandle handle, Func createObject, bool releaseHandle) { var rv = ArrayFromHandleFunc (handle, createObject); if (releaseHandle && handle != IntPtr.Zero) diff --git a/src/CoreFoundation/CFString.cs b/src/CoreFoundation/CFString.cs index a11f1e95a0..2291981bb0 100644 --- a/src/CoreFoundation/CFString.cs +++ b/src/CoreFoundation/CFString.cs @@ -128,17 +128,17 @@ namespace CoreFoundation { [DllImport (Constants.CoreFoundationLibrary, CharSet=CharSet.Unicode)] extern static IntPtr CFStringGetCharacters (IntPtr handle, CFRange range, IntPtr buffer); - public static IntPtr CreateNative (string? value) + public static NativeHandle CreateNative (string? value) { if (value is null) - return IntPtr.Zero; + return NativeHandle.Zero; return CFStringCreateWithCharacters (IntPtr.Zero, value, value.Length); } - public static void ReleaseNative (IntPtr handle) + public static void ReleaseNative (NativeHandle handle) { - if (handle != IntPtr.Zero) + if (handle != NativeHandle.Zero) CFObject.CFRelease (handle); } @@ -172,7 +172,7 @@ namespace CoreFoundation { } // to be used when an API like CF*Get* returns a CFString - public static string? FromHandle (IntPtr handle) + public static string? FromHandle (NativeHandle handle) { if (handle == IntPtr.Zero) return null; @@ -199,7 +199,7 @@ namespace CoreFoundation { } // to be used when an API like CF*Copy* returns a CFString - public static string? FromHandle (IntPtr handle, bool releaseHandle) + public static string? FromHandle (NativeHandle handle, bool releaseHandle) { var s = FromHandle (handle); if (releaseHandle && (handle != IntPtr.Zero)) diff --git a/src/CoreImage/CIImage.cs b/src/CoreImage/CIImage.cs index 9655a44b1d..30fe837d4a 100644 --- a/src/CoreImage/CIImage.cs +++ b/src/CoreImage/CIImage.cs @@ -32,6 +32,10 @@ using UIKit; using CoreVideo; #endif +#if !NET +using NativeHandle = System.IntPtr; +#endif + #nullable enable namespace CoreImage { @@ -116,7 +120,7 @@ namespace CoreImage { return new CIFilter [0]; var ret = new CIFilter [count]; for (nuint i = 0; i < count; i++){ - IntPtr filterHandle = filters.ValueAt (i); + var filterHandle = filters.ValueAt (i); string? filterName = CIFilter.GetFilterName (filterHandle); ret [i] = CIFilter.FromName (filterName, filterHandle); @@ -129,8 +133,8 @@ namespace CoreImage { if (colorSpace == null) ObjCRuntime.ThrowHelper.ThrowArgumentNullException (nameof (colorSpace)); - using (var arr = NSArray.FromIntPtrs (new IntPtr [] { colorSpace.Handle })){ - using (var keys = NSArray.FromIntPtrs (new IntPtr [] { CIImageInitializationOptionsKeys.ColorSpaceKey.Handle } )){ + using (var arr = NSArray.FromIntPtrs (new [] { colorSpace.Handle })){ + using (var keys = NSArray.FromIntPtrs (new [] { CIImageInitializationOptionsKeys.ColorSpaceKey.Handle } )){ using (var dict = NSDictionary.FromObjectsAndKeysInternal (arr, keys)){ return FromCGImage (image, dict); } diff --git a/src/CoreText/Adapter.cs b/src/CoreText/Adapter.cs index 16a4eacedc..029f6ed0ad 100644 --- a/src/CoreText/Adapter.cs +++ b/src/CoreText/Adapter.cs @@ -34,6 +34,10 @@ using CoreFoundation; using Foundation; using ObjCRuntime; +#if !NET +using NativeHandle = System.IntPtr; +#endif + namespace CoreText { internal static class Adapter { @@ -74,10 +78,10 @@ namespace CoreText { return ((NSNumber) value).NUIntValue; } - public static T[] GetNativeArray (NSDictionary dictionary, NSObject key, Converter converter) + public static T[] GetNativeArray (NSDictionary dictionary, NSObject key, Converter converter) { var cfArrayRef = CFDictionary.GetValue (dictionary.Handle, key.Handle); - if (cfArrayRef == IntPtr.Zero || CFArray.GetCount (cfArrayRef) == 0) + if (cfArrayRef == NativeHandle.Zero || CFArray.GetCount (cfArrayRef) == 0) return new T [0]; return NSArray.ArrayFromHandle (cfArrayRef, converter); } @@ -192,7 +196,7 @@ namespace CoreText { public static void SetNativeValue (NSDictionary dictionary, NSObject key, IEnumerable value) where T : INativeObject { - List v; + List v; if (value == null || (v = GetHandles (value)).Count == 0) SetNativeValue (dictionary, key, (INativeObject) null); else @@ -200,10 +204,10 @@ namespace CoreText { SetNativeValue (dictionary, key, array); } - static List GetHandles (IEnumerable value) + static List GetHandles (IEnumerable value) where T : INativeObject { - var v = new List (); + var v = new List (); foreach (var e in value) v.Add (e.Handle); return v; diff --git a/src/CoreText/CTFont.cs b/src/CoreText/CTFont.cs index 2278e6ed0d..c47a488f5c 100644 --- a/src/CoreText/CTFont.cs +++ b/src/CoreText/CTFont.cs @@ -2356,7 +2356,7 @@ namespace CoreText { if (cfArrayRef == IntPtr.Zero) return Array.Empty (); return NSArray.ArrayFromHandle (cfArrayRef, v => { - return (CTFontTable) (uint) v; + return (CTFontTable) (uint) (IntPtr) v; }, true); } diff --git a/src/CoreText/CTParagraphStyle.cs b/src/CoreText/CTParagraphStyle.cs index 42cc70fe5f..9e3fb530dc 100644 --- a/src/CoreText/CTParagraphStyle.cs +++ b/src/CoreText/CTParagraphStyle.cs @@ -205,7 +205,7 @@ namespace CoreText { internal class CTParagraphStyleSpecifierIntPtrsValue : CTParagraphStyleSpecifierValue { CFArray value; - public CTParagraphStyleSpecifierIntPtrsValue (CTParagraphStyleSpecifier spec, IntPtr[] value) + public CTParagraphStyleSpecifierIntPtrsValue (CTParagraphStyleSpecifier spec, NativeHandle[] value) : base (spec) { this.value = CFArray.FromIntPtrs (value); @@ -297,7 +297,7 @@ namespace CoreText { static CTParagraphStyleSpecifierValue CreateValue (CTParagraphStyleSpecifier spec, IEnumerable value) { - var handles = new List(); + var handles = new List(); foreach (var ts in value) handles.Add (ts.Handle); return new CTParagraphStyleSpecifierIntPtrsValue (spec, handles.ToArray ()); diff --git a/src/CoreText/CTStringAttributes.cs b/src/CoreText/CTStringAttributes.cs index eba19c72ae..756e47834b 100644 --- a/src/CoreText/CTStringAttributes.cs +++ b/src/CoreText/CTStringAttributes.cs @@ -42,6 +42,10 @@ using CoreGraphics; using UIKit; #endif +#if !NET +using NativeHandle = System.IntPtr; +#endif + namespace CoreText { #region CFAttributedStringRef AttributeKey Prototypes @@ -394,13 +398,16 @@ namespace CoreText { // 'Value must be a CFArray of CFNumberRefs' - System/Library/Frameworks/CoreText.framework/Headers/CTStringAttributes.h public void SetWritingDirection (params CTWritingDirection[] writingDirections) { - var ptrs = new IntPtr [writingDirections.Length]; + var ptrs = new NativeHandle [writingDirections.Length]; + var numbers = new NSNumber [writingDirections.Length]; for (int i = 0; i < writingDirections.Length; ++i) { - ptrs[i] = (new NSNumber ((int) writingDirections[i])).Handle; + numbers [i] = new NSNumber ((int) writingDirections [i]); + ptrs [i] = numbers [i].Handle; } var array = CFArray.Create (ptrs); CFMutableDictionary.SetValue (Dictionary.Handle, CTStringAttributeKey.WritingDirection.Handle, array); + GC.KeepAlive (numbers); // make sure the numbers aren't freed until we're done with them } } } diff --git a/src/Foundation/DictionaryContainer.cs b/src/Foundation/DictionaryContainer.cs index 1d344c26c5..6bd0bbb153 100644 --- a/src/Foundation/DictionaryContainer.cs +++ b/src/Foundation/DictionaryContainer.cs @@ -40,6 +40,10 @@ using CoreMedia; #endif // !WATCH #endif +#if !NET +using NativeHandle = System.IntPtr; +#endif + #nullable enable namespace Foundation { @@ -68,7 +72,7 @@ namespace Foundation { return NSArray.ArrayFromHandle (value); } - protected T[]? GetArray (NSString key, Func creator) + protected T[]? GetArray (NSString key, Func creator) { if (key is null) throw new ArgumentNullException (nameof (key)); @@ -476,10 +480,10 @@ namespace Foundation { static class DictionaryContainerHelper { // helper to avoid the (common pattern) - // var p = x is null ? IntPtr.Zero : h.Dictionary.Handle; - static public IntPtr GetHandle (this DictionaryContainer? self) + // var p = x is null ? NativeHandle.Zero : h.Dictionary.Handle; + static public NativeHandle GetHandle (this DictionaryContainer? self) { - return self is null ? IntPtr.Zero : self.Dictionary.Handle; + return self is null ? NativeHandle.Zero : self.Dictionary.Handle; } // helper to avoid the (common pattern) diff --git a/src/Foundation/NSArray.cs b/src/Foundation/NSArray.cs index 71fa9abae4..9d6a4f41d2 100644 --- a/src/Foundation/NSArray.cs +++ b/src/Foundation/NSArray.cs @@ -30,6 +30,10 @@ using System.Runtime.InteropServices; using CoreFoundation; using ObjCRuntime; +#if !NET +using NativeHandle = System.IntPtr; +#endif + namespace Foundation { public partial class NSArray { @@ -217,7 +221,7 @@ namespace Foundation { } } - static public NSArray FromIntPtrs (IntPtr [] vals) + static public NSArray FromIntPtrs (NativeHandle [] vals) { if (vals == null) throw new ArgumentNullException ("vals"); @@ -241,19 +245,23 @@ namespace Foundation { #endif } - internal static IntPtr GetAtIndex (IntPtr handle, nuint i) + internal static NativeHandle GetAtIndex (NativeHandle handle, nuint i) { +#if NET + return Messaging.NativeHandle_objc_msgSend_UIntPtr (handle, Selector.GetHandle ("objectAtIndex:"), (UIntPtr) i); +#else #if MONOMAC return Messaging.IntPtr_objc_msgSend_UIntPtr (handle, selObjectAtIndex_Handle, (UIntPtr) i); #else return Messaging.IntPtr_objc_msgSend_UIntPtr (handle, Selector.GetHandle ("objectAtIndex:"), (UIntPtr) i); #endif +#endif } [Obsolete ("Use of 'CFArray.StringArrayFromHandle' offers better performance.")] - static public string [] StringArrayFromHandle (IntPtr handle) + static public string [] StringArrayFromHandle (NativeHandle handle) { - if (handle == IntPtr.Zero) + if (handle == NativeHandle.Zero) return null; var c = GetCount (handle); @@ -264,9 +272,9 @@ namespace Foundation { return ret; } - static public T [] ArrayFromHandle (IntPtr handle) where T : class, INativeObject + static public T [] ArrayFromHandle (NativeHandle handle) where T : class, INativeObject { - if (handle == IntPtr.Zero) + if (handle == NativeHandle.Zero) return null; var c = GetCount (handle); @@ -278,9 +286,9 @@ namespace Foundation { return ret; } - static public T [] EnumsFromHandle (IntPtr handle) where T : struct, IConvertible + static public T [] EnumsFromHandle (NativeHandle handle) where T : struct, IConvertible { - if (handle == IntPtr.Zero) + if (handle == NativeHandle.Zero) return null; if (!typeof (T).IsEnum) throw new ArgumentException ("T must be an enum"); @@ -296,7 +304,7 @@ namespace Foundation { static public T [] FromArray (NSArray weakArray) where T : NSObject { - if (weakArray == null || weakArray.Handle == IntPtr.Zero) + if (weakArray is null || weakArray.Handle == NativeHandle.Zero) return null; try { nuint n = weakArray.Count; @@ -312,7 +320,7 @@ namespace Foundation { static public T [] FromArrayNative (NSArray weakArray) where T : class, INativeObject { - if (weakArray == null || weakArray.Handle == IntPtr.Zero) + if (weakArray is null || weakArray.Handle == NativeHandle.Zero) return null; try { nuint n = weakArray.Count; @@ -327,9 +335,9 @@ namespace Foundation { } // Used when we need to provide our constructor - static public T [] ArrayFromHandleFunc (IntPtr handle, Func createObject) + static public T [] ArrayFromHandleFunc (NativeHandle handle, Func createObject) { - if (handle == IntPtr.Zero) + if (handle == NativeHandle.Zero) return null; var c = GetCount (handle); @@ -341,9 +349,9 @@ namespace Foundation { return ret; } - static public T [] ArrayFromHandle (IntPtr handle, Converter creator) + static public T [] ArrayFromHandle (NativeHandle handle, Converter creator) { - if (handle == IntPtr.Zero) + if (handle == NativeHandle.Zero) return null; var c = GetCount (handle); @@ -355,10 +363,10 @@ namespace Foundation { return ret; } - static public T [] ArrayFromHandle (IntPtr handle, Converter creator, bool releaseHandle) + static public T [] ArrayFromHandle (NativeHandle handle, Converter creator, bool releaseHandle) { var rv = ArrayFromHandle (handle, creator); - if (releaseHandle && handle == IntPtr.Zero) + if (releaseHandle && handle == NativeHandle.Zero) NSObject.DangerousRelease (handle); return rv; } @@ -366,7 +374,7 @@ namespace Foundation { // FIXME: before proving a real `this` indexer we need to clean the issues between // NSObject and INativeObject coexistance across all the API (it can not return T) - static T UnsafeGetItem (IntPtr handle, nuint index) where T : class, INativeObject + static T UnsafeGetItem (NativeHandle handle, nuint index) where T : class, INativeObject { var val = GetAtIndex (handle, index); // A native code could return NSArray with NSNull.Null elements diff --git a/src/Security/Certificate.cs b/src/Security/Certificate.cs index 7ca82fa90c..3d42fec6dd 100644 --- a/src/Security/Certificate.cs +++ b/src/Security/Certificate.cs @@ -238,7 +238,7 @@ namespace Security { public NSData? GetPublicKey () { IntPtr result; - using (var oids = NSArray.FromIntPtrs (new IntPtr[] { SecCertificateOIDs.SubjectPublicKey })) { + using (var oids = NSArray.FromIntPtrs (new NativeHandle [] { SecCertificateOIDs.SubjectPublicKey })) { result = SecCertificateCopyValues (GetCheckedHandle (), oids.Handle, IntPtr.Zero); if (result == IntPtr.Zero) throw new ArgumentException ("Not a valid certificate"); diff --git a/src/Security/SslContext.cs b/src/Security/SslContext.cs index bbebc36ebf..9e3534048b 100644 --- a/src/Security/SslContext.cs +++ b/src/Security/SslContext.cs @@ -21,6 +21,10 @@ using CoreFoundation; using Foundation; using ObjCRuntime; +#if !NET +using NativeHandle = System.IntPtr; +#endif + namespace Security { #if !NET [Deprecated (PlatformName.MacOSX, 10,15, message: "Use 'Network.framework' instead.")] @@ -473,7 +477,7 @@ namespace Security { { int i = identity is null ? 0 : 1; int n = certificates is null ? 0 : certificates.Count (); - var ptrs = new IntPtr [n + i]; + var ptrs = new NativeHandle [n + i]; if (i == 1) ptrs [0] = identity!.Handle; if (certificates is not null) { diff --git a/src/UIKit/UIAppearance.cs b/src/UIKit/UIAppearance.cs index fc460a8aff..b31350c262 100644 --- a/src/UIKit/UIAppearance.cs +++ b/src/UIKit/UIAppearance.cs @@ -15,6 +15,10 @@ using System.Runtime.InteropServices; using Foundation; using ObjCRuntime; +#if !NET +using NativeHandle = System.IntPtr; +#endif + namespace UIKit { public partial class UIAppearance { public override bool Equals (object other) @@ -45,15 +49,15 @@ namespace UIKit { return !(a == b); } - static IntPtr[] TypesToPointers (Type[] whenFoundIn) + static NativeHandle[] TypesToPointers (Type[] whenFoundIn) { #if TVOS - IntPtr [] ptrs = new IntPtr [whenFoundIn.Length]; + var ptrs = new NativeHandle [whenFoundIn.Length]; #else if (whenFoundIn.Length > 4) throw new ArgumentException ("Only 4 parameters supported currently"); - IntPtr [] ptrs = new IntPtr [5]; // creating an array of 5 when we support only 4 ensures that the last one is IntPtr.Zero. + var ptrs = new NativeHandle [5]; // creating an array of 5 when we support only 4 ensures that the last one is IntPtr.Zero. #endif for (int i = 0; i < whenFoundIn.Length; i++){ if (whenFoundIn [i] == null) @@ -62,7 +66,7 @@ namespace UIKit { throw new ArgumentException (String.Format ("Type {0} does not derive from NSObject", whenFoundIn [i])); var classHandle = Class.GetHandle (whenFoundIn [i]); - if (classHandle == IntPtr.Zero) + if (classHandle == NativeHandle.Zero) throw new ArgumentException (string.Format ("Could not find the Objective-C class for {0}", whenFoundIn[i].FullName)); ptrs [i] = classHandle; @@ -104,7 +108,7 @@ namespace UIKit { [BindingImpl (BindingImplOptions.Optimizable)] public static IntPtr GetAppearance (IntPtr class_ptr, params Type [] whenFoundIn) { - IntPtr[] ptrs = TypesToPointers (whenFoundIn); + var ptrs = TypesToPointers (whenFoundIn); if (Runtime.IsARM64CallingConvention) { // The native function takes a variable number of arguments ('appearanceWhenContainedIn:'), terminated with a nil value. @@ -141,7 +145,7 @@ namespace UIKit { if (traits == null) throw new ArgumentNullException ("traits"); - IntPtr[] ptrs = TypesToPointers (whenFoundIn); + var ptrs = TypesToPointers (whenFoundIn); if (Runtime.IsARM64CallingConvention) { // The native function takes a variable number of arguments ('appearanceWhenContainedIn:'), terminated with a nil value. diff --git a/src/UIKit/UIApplication.cs b/src/UIKit/UIApplication.cs index c53e7767c7..5f018c589a 100644 --- a/src/UIKit/UIApplication.cs +++ b/src/UIKit/UIApplication.cs @@ -16,6 +16,10 @@ using System.Runtime.InteropServices; using CoreFoundation; using Foundation; +#if !NET +using NativeHandle = System.IntPtr; +#endif + #nullable enable namespace UIKit { @@ -73,8 +77,8 @@ namespace UIKit { public static void Main (string []? args, Type? principalClass, Type? delegateClass) { - var p = principalClass == null ? IntPtr.Zero : CFString.CreateNative (new Class (principalClass).Name); - var d = delegateClass == null ? IntPtr.Zero : CFString.CreateNative (new Class (delegateClass).Name); + var p = principalClass is null ? NativeHandle.Zero : CFString.CreateNative (new Class (principalClass).Name); + var d = delegateClass is null ? NativeHandle.Zero : CFString.CreateNative (new Class (delegateClass).Name); Initialize (); UIApplicationMain (args?.Length ?? 0, args, p, d); CFString.ReleaseNative (d); diff --git a/tests/monotouch-test/ObjCRuntime/RegistrarTest.cs b/tests/monotouch-test/ObjCRuntime/RegistrarTest.cs index a455c47df0..0937477930 100644 --- a/tests/monotouch-test/ObjCRuntime/RegistrarTest.cs +++ b/tests/monotouch-test/ObjCRuntime/RegistrarTest.cs @@ -4759,7 +4759,7 @@ namespace MonoTouchFixtures.ObjCRuntime { using (var obj = new RefOutParametersSubclass ()) { var sel = Selector.GetHandle ("testClassArray:a:b:"); var dummyObj = new Class [] { new Class (typeof (NSObject)) }; - var dummyArray = NSArray.FromIntPtrs (new IntPtr [] { Class.GetHandle (typeof (NSObject)) }); + var dummyArray = NSArray.FromIntPtrs (new NativeHandle [] { Class.GetHandle (typeof (NSObject)) }); Class [] refObj = null; Class [] outObj = null; TestMethod test = obj.TestClassArray;