作者Gsus (肉元,吉米,助教)
看板MacDev
標題Re: [問題] class method
時間Sun Oct 24 15:12:16 2010
※ 引述《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