
var successfulEnumeration = store.EnumerateContacts(fetchRequest,out error,(contact,stop) =>{ stop = true; // this does nothing of course }); 在ObjC / Swift中,停止将类似于UnsafePointer< ObjCBool>因此:
ObjC:* stop = YES;
ObjC:stop.initialize ….
Swift:stop.withUnsafePointer {p in p.memory = true}
Swift2:stop.memory = true
解决方法 我认为这可能是Xamarin.iOS中的一个错误,如果我们看一下 NSSetEnumerator,它的委托签名看起来像这样:public delegate VoID NSSetEnumerator (NSObject obj,ref Boolean stop)
我认为它需要ref关键字或你设置的值不会改变.
CNContactStoreEnumerateContactsHandler供参考
public delegate VoID CNContactStoreEnumerateContactsHandler (CNContact contact,Boolean stop)
我只是要用NSSetEnumerator运行测试,看看它在设置停止时是否停止.
更新
如果您运行下面的代码,您会看到它在达到5时实际停止:
NSSet set = new NSSet<NSNumber> (new []{ new NSNumber(1),new NSNumber(2),new NSNumber(3),new NSNumber(4),new NSNumber(5),new NSNumber(6),new NSNumber(7),new NSNumber(8),new NSNumber(9)});set.Enumerate ((NSObject obj,ref bool stop) => { var num = obj as NSNumber; if (num.Int32Value == 5) stop = true;}); 可以将此作为错误发布并立即修复其开源.
总结以上是内存溢出为你收集整理的xamarin – 提前退出`CNContactStoreEnumerateContactsHandler`枚举全部内容,希望文章能够帮你解决xamarin – 提前退出`CNContactStoreEnumerateContactsHandler`枚举所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)