我在我的应用程序中使用核心位置框架并将更新位置发送到didUpdateToLocation方法中的服务器,并且我分配CLLocationManager实例的视图是登录后的第二个视图,此视图是从登录视图调用并释放CLLocationManager的dealloc方法但每次我来自登录屏幕,然后didUpdateToLocation方法调用两次和三次取决于我从登录视图来了多少次,所以问题是什么,我该如何避免这种情况?如何避免多次分配CLLocationManager实例?
0
A
回答
1
如果你想避免你的CLLocationManager实例的多个分配,定义实例为您appDelegate
每当你需要得到这个实例的时间属性,你会做
YouAppDelegate *appDelegate = (YouAppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.yourLocationInstance;
1
我通常只使用singleton这种类型的东西。只需定义一个类方法(在方法定义上使用+ vs a - )。这里是一个单身定义的例子:
+(id)sharedLocationManager
{
static BCLocationManager *sharedLocationManager;
@synchronized(self)
{
if (!sharedLocationManager)
{
sharedLocationManager = [[BCLocationManager alloc] init];
}
return sharedLocationManager;
}
return sharedLocationManager;
}
基本上你定义类的静态实例,如果不存在,它只是初始化。使用单例,您永远不会访问实例init函数。始终单身访问的结果分配给适当的指针,像这样:
BCLocationManager * testInstance = [BCLocationManager sharedLocationManager];
现在,所有你需要做的就是在您的应用选择合适的header.h,每个人都可以看到你的位置经理是单个实例。只要你不使用init的实例,你永远不会创建多个。
相关问题
- 1. Python多次避免大数组分配
- 2. 许多CLLocationManager实例
- 3. CLLocationManager的多个实例
- 4. 避免部分对象实例化
- 5. 避免运行多个实例
- 6. Android AsyncTask - 避免多个实例运行
- 7. 避免在分配
- 8. 如何避免<spring:url /> ing多次
- 9. 如何避免多次声明中angularoutes
- 10. 如何避免easyhook多次注入dll?
- 11. 如何避免多次点击ListView?
- 12. 如何避免刷新令牌多次?
- 13. 如何避免多次调用C#
- 14. 如何避免多次发送表单
- 15. GLSL如何避免多次检查
- 16. 如何避免被追加多次
- 17. 如何避免多次注册事件
- 18. 如何避免成为朋友多次
- 19. 如何避免类java的同一个实例正在运行多次
- 20. 如何避免两次删除分配的内存?
- 21. Django:如何避免在每次保存时重新分配ForeignKey?
- 22. 避免Java的实例
- 23. web.py:避免全局实例?
- 24. 如何避免匹配太多?
- 25. 如何避免多个应用程序实例?
- 26. 如何避免从服务开始的多个活动实例
- 27. MVC模型关系:如何避免多个模型实例?
- 28. 如何避免堆栈中多个实例的碎片?
- 29. 如何避免创建多个对象实例?
- 30. 如何在Angular中避免braintree.setup的多个实例?