作者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
1F:→ hothero:谢谢^^,已解决 10/24 16:45
2F:推 hothero:阿屋,我刚刚用第二个方法改成在background执行就无法了 10/24 17:13
3F:→ hothero:似乎background只接受void,改成第一个就失败了... 10/24 17:14
4F:→ hothero:是因为我的method是class method(+)的关系吗? 10/24 17:14
5F:→ zonble:你另外开一个 thread? 10/24 17:18
6F:推 hothero:是阿,因为想显示progressBar 10/24 17:24
7F:→ hothero:如果真的没办法我就只好改用其他方式了@@ 10/24 17:25
8F:推 hothero:nsobject的performSelectorInBackground就只能用void吗? 10/24 17:30
9F:→ uranusjr:Method 写定了就是那样, Objective-C 没有函数重载 10/24 18:20
10F:→ zonble:在开下一个 thread 的时候,程式就已经往下走了 10/24 19:53
11F:→ zonble:这样要怎麽把东西 return 回来,用 callback 吧。 10/24 19:53
12F:→ hothero:请问z大,是说像notification的方式吗?? 10/24 23:27