2017-06-01 85 views
3

我用這條線在Objective-CiOS版雨燕3 performSelector onMainThread

[self performSelectorOnMainThread: @selector(importComplete) 
withObject: nil waitUntilDone: YES]; 

我已經試過上述行到任何數量的變型的轉換,但沒有發現任何東西,將編譯。我目前的嘗試如下:

performSelector (onMainThread: #selector(importComplete), withObject:nil, waitUntilDone: false) 

我還沒有能夠讓我的變化進行編譯。上述變化將消息傳遞

「未解決的標識符performSelector使用。

我讀過的一切,我能找到這個方法,它似乎是在斯威夫特3一團糟,無論如何,但我「M只是學習語言,我已經浪費了很多時間在什麼應該是一個簡單的語法。

任何人都可以提出一個建議嗎?

TIA

+1

你在調用哪個類performSelector? –

+1

你實現了'importComplete'方法嗎? – ridvankucuk

+0

我沒有實現importComplete。請參閱下面的回答評論。 – RegularExpression

回答

1

執行操作不withObject它是在with

試試這個

performSelector(onMainThread: #selector(importComplete), with: nil, waitUntilDone: false) 

,並呼籲該方法

func importComplete() { 
    // 
    print("Hello World") 
} 

輸出 enter image description here

+0

有多個答案可以工作。最後,我在源文件中發現了一個導致編譯問題的錯誤,並且我得到了一個乾淨的編譯,其中包含您的建議以及修復上述項目。感謝所有受訪者。 – RegularExpression

+0

@RegularExpression - 歡迎並高興地聽到這個 –

1

選項之一可能是:

let selector = NSSelectorFromString("importComplete") 
perform(selector, on: Thread.main, with: nil, waitUntilDone: true) 

let selector = NSSelectorFromString("importComplete") 
perform(selector, on: Thread.main, with: nil, waitUntilDone: true, modes: nil) 

取決於你的需要。

1

您可以使用此代碼對main線程

performSelector(onMainThread: #selector(performOperation), with: nil, waitUntilDone: true) 

你的選擇方法

func performOperation() { 

    } 
0

如果你宣佈你的功能一樣,

func importComplete() { 


} 

那麼你可以做,

self.performSelector(onMainThread: #selector(ViewController.importComplete), with: nil, waitUntilDone: true) 

其中ViewController是你目前的課程!