我在我的應用程序中使用核心位置框架並將更新位置發送到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的多個實例?