コード例 #1
0
        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();
        }
コード例 #2
0
 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();
         }
     };
 }