在iPhone中有沒有什麼辦法在[self performSelector]
方法中傳參數?這個方法中有多少個最大參數?如果是的話,請給我任何鏈接或任何想法來開發此功能。iPhone:如何在執行選擇器方法中傳遞參數?
3
A
回答
2
使用
- (id)performSelector:(SEL)aSelector withObject:(id)anObject
側擊
0
可以傳遞只有一個參數與performSelector
[self performSelector:@selector(aSelector) withObject:(id)object];
0
NSObject的有以下:
- (id)performSelector:(SEL)aSelector withObject:(id)anObject
和
- (id)performSelector:(SEL)aSelector withObject:(id)anObject withObject:(id)anotherObject
你總是可以讓anObject是一個NSArray,NSDictionary的或其他自定義類,將包含參數爲你
1
你有三種可能性,整體:
1. – performSelector:
2. – performSelector:withObject:
3. – performSelector:withObject:withObject:
第一個根本沒有論據;第二,一個論點;第三,兩個論點。
7
如果你想通過不超過兩個參數,使用
- (id)performSelector:(SEL)aSelector
- (id)performSelector:(SEL)aSelector withObject:(id)anObject
- (id)performSelector:(SEL)aSelector withObject:(id)anObject withObject:(id)anotherObject
之一,如果你需要傳遞更多的參數,使用NSInvocation
。這裏是docs。
UPD:這裏是一個NSInvocation
的例子。再說了,你要發送doThis:andThis:andThis:
到targetObject
MyClass
類型:
SEL message = @selector(doThis:andThis:andThis:);
NSMethodSignature *signature = [MyClass methodSignatureForSelector:message];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
[invocation setTarget:targetObject];
[invocation setSelector:message];
[invocation setArgument:&fist atIndex:2]; // Note that you need to put &
[invocation setArgument:&second atIndex:3]; // as you send a pointer
[invocation setArgument:&third atIndex:4]; // Also the indexing starts from 2
// 0 is for target, 1 is for selector
[invocation invoke];
0
多個對象 - 只需創建你的對象數組/字典,並通過這個數組/詞典
[self performSelector:@selector(aSelector) withObject:myArray];
相關問題
- 1. 如何在「查詢」方法中傳遞選擇參數
- 2. 作爲參數傳遞時無法執行方法iPhone/iPad
- 3. 傳遞參數在iPhone中的選擇器
- 4. 傳遞nil來執行選擇器
- 5. Sidekiq如何將參數傳遞給執行方法?
- 6. 如何在定時器選擇器上傳遞參數
- 7. 如何使用參數傳遞一個塊作爲選擇器來執行選擇器:withObject:?
- 8. 如何傳遞參數來執行HttpServer?
- 9. 如何在「查詢」方法中傳遞兩個或多個選擇參數
- 10. 傳遞UIGestureRecognizer參數選擇器
- 11. 將參數傳遞給jQuery選擇器
- 12. 通過選擇器傳遞參數
- 13. 將參數傳遞給選擇器
- 14. 發送方法:選擇何時傳遞參數
- 15. 參數傳遞給選擇
- 16. 如何將參數傳遞給NSNotificationCenter中的選擇器?
- 17. 如何在Rails路由幫助器方法中傳遞參數?
- 18. 傳遞相同參數時方法執行的方式不同
- 19. 如何傳遞函數參數到jquery選擇器
- 20. 如何將可選參數傳遞給C++中的方法?
- 21. 如何在選擇器方法中發送兩個參數?
- 22. class_eval如何參數傳遞給方法
- 23. 傳遞數參數方法
- 24. 如何通過在bash中選擇傳遞參數
- 25. 如何在Python中動態選擇並傳遞命名參數?
- 26. 傳遞參數在選擇查詢
- 27. 如何通過選擇器/動作傳遞參數?
- 28. 如何將參數傳遞給選擇器?
- 29. 如何將附加參數傳遞給ASIHTTPRequest didFinishSelector選擇器
- 30. 在symfony renderComponent方法中傳遞參數
使用[鏈接]( http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intfm/NSObject/performSelector:withObject:withObject :) ' - (id)performSelector:(SEL)aSelector withObject:(id)anObject withObject:(id)anotherObject'你可以傳遞兩個對象 - 我不知道是否有可能通過更多。 – SideSwipe
好的多謝了 –
正如其他答案中所述,您可以通過將它們放在NSDictionary或NSArray中傳遞給方法,但您必須更改方法,傳遞給做這個。 – SideSwipe