我想为iOS上的不同应用程序创建可重用的类库,我们称它们为:
我的首要目标是让他们共享一些数据。 App1创建一些数据并保存信息。 App2加载数据并将其用于进一步处理。
我已经读过ways to share on ios,发现可以将对象数据写入图像或联系人中。
现在,我正面临通用粘贴板的方法。 但是,经过大约。一个小时后,我在粘贴板上找不到我的对象(尽管它应该是持久的see)
用于存储到粘贴板的代码:
partial void Testbutton_TouchUpInside(UIButton sender)
{
var pasteboard = UIPasteboard.General;
//Create Data
// 4 * 1 MB
IEnumerable<int> idata = Enumerable.Range(0, 1024);
int[] iarray = idata.ToArray();
byte[] data = new byte[1+iarray.Length * sizeof(int)];
Buffer.BlockCopy(iarray, 0, data, 1, data.Length-1);
data[0] = counter++;
NSData nsd = NSData.FromArray(data);
// insert to pasteboard
//pasteboard.SetData(nsd, "mydata");
// nach etwa 1h ist es weg
pasteboard.SetItemProviders(new NSItemProvider[] {new NSItemProvider(nsd, key)},false,NSDate.DistantFuture);
testlabel.Text = "Inserted Data to Pasteboard";
}
阅读项目的代码:
partial void Testbutton2_TouchUpInside(UIButton sender)
{
var pasteboard = UIPasteboard.General;
bool contains = pasteboard.Contains(new[] { key });
if(contains)
{
testlabel2.Text = $"Contains {key}";
var data = pasteboard.DataForPasteboardType(key);
var dataBytes = new byte[data.Length];
System.Runtime.InteropServices.Marshal.Copy(data.Bytes, dataBytes, 0, Convert.ToInt32(data.Length));
int[] ints = new int[(dataBytes.Length-1)/4];
Buffer.BlockCopy(dataBytes, 1, ints, 0, dataBytes.Length - 1);
testlabel.Text = "Loaded " + dataBytes.Length + " bytes";
//testlabel2.Text += "Data = {"+dataBytes[0]+","+String.Join(", ", ints) +"}";
StringBuilder sb = new StringBuilder(1024 );
sb.Append("Data = {" + dataBytes[0]);
foreach (var i1 in ints)
{
sb.Append($", {i1.ToString()}");
}
testlabel2.Text = sb.ToString() + "}";
int i = 123;
}
else
{
testlabel2.Text = $"Contains NOT {key}";
}
}
有人可以告诉我在这种情况下为什么删除对象的原因,或者是在来自不同开发人员的两个应用程序之间共享对象(通常是字节数组)的好方法吗? 预先感谢。