我必须在后台或新线程中运行此方法。如何在 performSelector 中传递两个参数?
[self addMessageFromRemoteNotification:userInfo updateUI:NO];
-(void)addMessageFromRemoteNotification:(NSDictionary *)userInfo updateUI:(BOOL)updateUI
{
}
我必须在后台或新线程中运行此方法。如何在 performSelector 中传递两个参数?
[self addMessageFromRemoteNotification:userInfo updateUI:NO];
-(void)addMessageFromRemoteNotification:(NSDictionary *)userInfo updateUI:(BOOL)updateUI
{
}
如果必须使用 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) }];
祝你好运!
只需为您要发送的数据创建一个模型类,例如 -
@interface Car : NSObject
@property (nonatomic, strong) NSString *manufacturer;
@property (nonatomic, strong) NSString *colour;
@property (nonatomic, strong) NSDate *year;
@end
然后在您的 performSelector: 方法中传递它的一个实例。
无论如何,它通常比传递多个参数要好,以防您决定更改数据模型(例如,添加更多属性)——尽管这当然取决于具体情况。
有方法
[self performSelector:@selector(addMessageFromRemoteNotification:) withObject:param1 withObject:param2];
你可以用这个。