在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