iOS呼叫某個物件的方法

2021-07-29 16:21:13 字數 1175 閱讀 8147

在 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中的某個物件

大 大 大陣列 重要的事情說三遍!很久之前有一次面試,大哥問我 定位的時候,你在陣列中去找該位址是遍歷陣列嗎?我毫不猶豫 當然是遍歷陣列,根據首寫字母來找對應組再去找對應位址會更快些 然而雖然我是這樣想的,但是我覺得我回答的不對,但是我沒有去找最佳答案。直到 現在遇到了真正的大陣列,在乙個龐大的陣列...