我要在后台或新线程中运行此方法。如何在performSelector中传递两个参数?
[self addMessageFromRemoteNotification:userInfo updateUI:NO];
-(void)addMessageFromRemoteNotification:(NSDictionary *)userInfo updateUI:(BOOL)updateUI
{
}
答案 0 :(得分:1)
如果必须使用performSelector并且需要N个参数,只需将它们包装在数组或字典中,并使被调用方法的签名具有NSArray或NSDictionary的单个参数。任何原始类型(如int,float等)都需要包装在NSNumber中。
使用NSArray的示例:
- (void) addMessageFromRemoteNotification:(NSArray*)parameters
{
}
...
[self performSelector:@selector(addMessageFromRemoteNotification:)
withObject:@[ obj1, obj2, obj3, @(4.0f)]];
使用NSDictionary的示例:
- (void) addMessageFromRemoteNotification:(NSDictionary*)parameters
{
}
...
[self performSelector:@selector(addMessageFromRemoteNotification:)
withObject:@{ @"prop1": @"prop1value", @"prop2": @(4.0f) }];
祝你好运!
答案 1 :(得分:0)
有方法
[self performSelector:@selector(addMessageFromRemoteNotification:) withObject:param1 withObject:param2];
你可以使用它。
答案 2 :(得分:0)
只需为要发送的数据创建一个模型类,例如 -
@interface Car : NSObject
@property (nonatomic, strong) NSString *manufacturer;
@property (nonatomic, strong) NSString *colour;
@property (nonatomic, strong) NSDate *year;
@end
然后在你的performSelector:方法中传递它的一个实例。
它通常比传递多个参数更好,如果您决定更改数据模型(例如,添加更多属性) - 虽然它将取决于当然的情况。