在 ios中可以直接呼叫某個物件的訊息方式有兩種:
一種是performselector:withobject
;
再一種就是nsinvocation
。
第一種方式比較簡單,能完成簡單的呼叫。但是對於》2個的引數或者有返回值的處理,那performselector:withobject
就顯得有點有心無力了,那麼在這種情況下,我們就可以使用nsinvocation
來進行這些相對複雜的操作
- (id)performselector:(
sel)selector withobjects:(
nsarray
*)objects
// nsinvocation :
利用乙個
nsinvocation
物件包裝一次方法呼叫(方法呼叫者、方法名、方法引數、方法返回值)
nsinvocation
*invocation = [
nsinvocation
invocationwithmethodsignature
:signature];
invocation.
target
=self;
invocation.
selector
= selector;
// 設定引數
nsinteger
paramscount = signature.
numberofarguments-2
; //
除self
、_cmd
以外的引數個數
paramscount =
min(paramscount, objects.
count);
for(
nsinteger
i =0
; i < paramscount; i++)
// 呼叫方法
[invocation
invoke];
// 獲取返回值 id
returnvalue =
nil; if
(signature.
methodreturnlength)
return
returnvalue; }
NSInvocation直接呼叫某個物件的訊息
在 ios中可以直接呼叫某個物件的訊息方式有兩種 一種是performselector withobject 再一種就是nsinvocation。第一種方式比較簡單,能完成簡單的呼叫。但是對於 2個的引數或者有返回值的處理,那就需要做些額外工作才能搞定。那麼在這種情況下,我們就可以使用nsinvoc...
物件的呼叫方法
不知道是不是所有人都和我一樣,對於物件的使用有點感冒,說到底就是有些摸不著頭腦,看似懂得,又彷彿沒有頭緒,最後只能不停的閱讀 不斷地熟悉物件的使用。就比如這個類之間資訊的傳遞 class hello void sayhello system.out.println hello,good mornin...
iOS 查詢 大 NSArray中的某個物件
大 大 大陣列 重要的事情說三遍!很久之前有一次面試,大哥問我 定位的時候,你在陣列中去找該位址是遍歷陣列嗎?我毫不猶豫 當然是遍歷陣列,根據首寫字母來找對應組再去找對應位址會更快些 然而雖然我是這樣想的,但是我覺得我回答的不對,但是我沒有去找最佳答案。直到 現在遇到了真正的大陣列,在乙個龐大的陣列...