看板 MacDev 關於我們 聯絡資訊
※ 引述《hothero (Ronald阿呈)》之銘言: : 不好意思第一次發文@@ : 現在情況是我最近在把一些function額外包成一個class : 但現在遇到一個問題是 : 我用物件call by reference(預設)的方式把我要做的物件(uiimage)傳過去 : 我額外包的class對他動點手腳 : 但是做完後我發現那個物件(uiimage)跟一開始的都一樣阿...... : 不管是用class/instant的method還是variable我都試過了 : 感覺像是我物件給過去處理的方式有問題... : 謝謝 其實call by reference我之前才問過XDD 其實我不太確定call by reference的definition是什麼 如果是說 int i = 1; function(&i); 這種"&i"的話obj-c沒有 但是如果你是要傳「物件」的pointer, 那其實大部分obj-c的物件變數就是一個pointer了 如果你是要一個mehtod接收物件然後做處理 可以這樣: 1. - (void)imageProcessing:(UIImage *)image { // localImage 與 image 指向同一個object UIImage *localImage = [image retain]; /*perform your image processing on localImage here...*/ [localIamge release]; } 2. - (UIImage *)imagePropcessing:(UIImage *)image { UIImage *localImage = [image copy]; /*perform your image processing on localImage here...*/ return [localImage autorelease]; } 不過根據Zonble大的描述UIImage似乎不適合做影像處理 我只能盡我所了解來提供幫助而已QQ 希望有幫助囉~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.248.14.135
hothero:謝謝^^,已解決 10/24 16:45
hothero:阿屋,我剛剛用第二個方法改成在background執行就無法了 10/24 17:13
hothero:似乎background只接受void,改成第一個就失敗了... 10/24 17:14
hothero:是因為我的method是class method(+)的關係嗎? 10/24 17:14
zonble:你另外開一個 thread? 10/24 17:18
hothero:是阿,因為想顯示progressBar 10/24 17:24
hothero:如果真的沒辦法我就只好改用其他方式了@@ 10/24 17:25
hothero:nsobject的performSelectorInBackground就只能用void嗎? 10/24 17:30
uranusjr:Method 寫定了就是那樣, Objective-C 沒有函數重載 10/24 18:20
zonble:在開下一個 thread 的時候,程式就已經往下走了 10/24 19:53
zonble:這樣要怎麼把東西 return 回來,用 callback 吧。 10/24 19:53
hothero:請問z大,是說像notification的方式嗎?? 10/24 23:27