2016-05-13 29 views
1

我有一個TPushEvent和TKinveyProvider在我的firemonkey窗體上聲明如何設置TPushEvent的提供者?

我試圖在代碼中手動設置提供程序的值。我意識到,默認情況下,當您將這些控件放置在窗體上時,PushEvent的Provider屬性會自動設置爲TKinveyProvider。然而,我正在解決一個明顯的錯誤,我想稍後設置它。

我在這段代碼中正確設置提供者屬性嗎?

//In my form class 
//... 
myPushEvents: TPushEvents; 
myKinveyProvider: TKinveyProvider; 

//later on in one of my procedures/methods 
//... 
myPushEvents.Provider := myKinveyProvider; 

當我看到一個其他的價值以後,應該已經確定之後,它仍然顯得nil

Provider似乎被定義爲IBackendProvider這是一個界面,我不知道如果我有比我會像一個整數或字符串簡單數據類型,它的供應商不同的方式分配它。

+0

您可以直接指定實現該接口的接口類。只是不要手動銷燬課程,因爲引用計數會爲你做。 – Johan

+0

這是一個不是? – BIBD

+0

的確如此。 – Johan

回答

1

是的,這是正確的做法。

myPushEvents.Provider := myKinveyProvider 

在這種情況下myPushEvents.Provider被分配一個參考myKinveyProvider。因爲myPushEvents.Provider預計符合IBackendProvider interfcase和myKinveyProvider(a TKinveyProvider),所以您不必執行任何特殊演員。

注意:在我的具體情況下,感謝myPushEvents.Provider被設置爲定時器完成的結果,它確實仍然是nil

添加一個

if (myPushEvents.Provider <> nil) then 
begin 
    // ... use myPushEvents.Provider 
end; 

保護它的使用,直到該值已正確設置後,定時器運行。

相關問題