public static void PrintStringInfo(SwiftString str) { var stringRep = new StringRep(str); var nsstringPtr = stringRep.BridgeObject; Console.WriteLine("Swift string: " + str.ToString()); Console.Write($"Type: {stringRep.Discriminator} Ptr: {nsstringPtr.ToString ($"X{IntPtr.Size * 2}")} "); if (nsstringPtr != IntPtr.Zero) { // Here be dragons. I didn't see a good API to get the reference count for this object. // I intuited it by observing bytes in memory change on x64. This is clearly fragile. var refPtr = nsstringPtr + (IntPtr.Size + sizeof(int)); var refCount = Marshal.ReadInt32(refPtr); Console.Write($"RefCount: {refCount}"); } Console.WriteLine(); }
public override void ViewDidLoad() { base.ViewDidLoad(); this.Translate.TouchUpInside += (sender, e) => { using (IgPay igpay = new SwiftIgPay.IgPay(SwiftString.FromString(InputText.Text))) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < igpay.Count; i++) { using (SwiftString str = igpay [i]) { if (i > 0) { sb.Append(" "); } sb.Append(str.ToString()); } } OutputText.Text = sb.ToString(); } }; }