Xamarin.iOS Unified API 注意要点

新数据类型

NATIVE TYPE 32-BIT BACKING TYPE 64-BIT BACKING TYPE
System.nint System.Int32 (int) System.Int64 (long)
System.nuint System.UInt32 (uint) System.UInt64 (ulong)
System.nfloat System.Single (float) System.Double (double)
OLD TYPE IN SYSTEM.DRAWING NEW DATA TYPE DESCRIPTION
RectangleF CGRect Holds floating point rectangle information.
SizeF CGSize Holds floating point size information (width, height)
PointF CGPoint Holds a floating point, point information (X, Y)

检查平台架构

if (IntPtr.Size == ) {
Console.WriteLine ("32-bit App");
} else if (IntPtr.Size == ) {
Console.WriteLine ("64-bit App");
}

Arrays and System.Collections.Generic

 集合索引需要显示转换
public List<string> Names = new List<string>();
... public string GetName(nint index) {
return Names[(int)index];
}

DateTime 与 NSDate需要显示转换

下面两个扩展方法帮助实现隐式转换:

public static DateTime NSDateToDateTime(this NSDate date)
{
// NSDate has a wider range than DateTime, so clip
// the converted date to DateTime.Min|MaxValue.
double secs = date.SecondsSinceReferenceDate;
if (secs < -)
return DateTime.MinValue;
if (secs > )
return DateTime.MaxValue;
return (DateTime) date;
} public static NSDate DateTimeToNSDate(this DateTime date)
{
if (date.Kind == DateTimeKind.Unspecified)
date = DateTime.SpecifyKind (date, /* DateTimeKind.Local or DateTimeKind.Utc, this depends on each app */)
return (NSDate) date;
}

NSAction Replaced with Action

 

Custom delegates replaced with Action<T>

 

Task<bool> replaced with Task<Tuple<Boolean,NSError>>

上一篇:Git详解之一 Git起步


下一篇:python基础-range和xrange的区别