ios doc - 替換CLLocationManager的“目的”屬性




deve development (3)

在iOS 6中,不推薦使用CLLocationManager的purpose屬性來描述使用位置服務的原因( @property(copy, nonatomic) NSString *purpose )。

如果有的話,Apple會提出什麼替代品?


Answers

在iOS 6中替換purpose屬性是一個名為NSLocationUsageDescription的新Info.plist密鑰(又名“隱私 - 位置使用說明”)。

密鑰記錄在信息屬性列表密鑰參考中,但遺憾的是, purpose屬性的棄用說明未提及。

但是, CLLocationManager.h確實有這樣的評論:

*已棄用。 使用密鑰NSLocationUsageDescription在Info.plist中設置目的字符串。

在您的代碼中,您可以設置密鑰和purpose屬性(但是如果/當將來實際刪除該方法時,您可能想要檢查位置管理器是否首先響應該選擇器)。

如果在iOS 6下運行,位置管理器將使用該密鑰。
在低於iOS 6的情況下運行時,將忽略該鍵並使用purpose屬性。


我在我的應用程序中遇到了同樣的問題。

我發現你現在可以設置CLLocationManager!的Activity了CLLocationManager! 您可以選擇不同的CLActivityTypes,因此您不再需要編寫自己的目的。

這是例如基於導航的應用程序

[self.gps setActivityType:CLActivityTypeAutomotiveNavigation];

其他可能的CLActivityTypes是:

 - CLActivityTypeFitness
 - CLActivityTypeOther
 - CLActivityTypeOtherNavigation

強大:

  • 屬性不會銷毀,但只有當您將屬性設置為零時,對象才會被銷毀
  • 默認情況下,所有實例變量和局部變量都是強指針。
  • 只有在需要保留該對象時才使用強壯。
  • 我們通常使用UIViewControllers(UI項目的父母)
  • IOS 4(非ARC)我們可以使用保留關鍵字
  • IOS 5(ARC)我們可以使用強關鍵字

例如:@property(strong,nonatomic)ViewController * viewController;

@synthesize viewController;

按默認自動獲取並設置為零

  • 我們通常使用弱IBOutlets(UIViewController的孩子)和委託
  • 與分配,保留或釋放一樣

例如:@property(弱,非原子)IBOutlet UIButton * myButton;

@synthesize myButton;





ios cocoa-touch ios6 cllocationmanager deprecated