performSelector:withObject:afterDelay: - 一种方法来传递除对象之外的东西?

时间:2012-04-16 13:03:29

标签: xcode

我试图使用此方法在第一个模态被解除后显示第二个模态...方法本身工作正常,除了它要求我传递一个对象作为参数和我真正想做的事情是传递UIImageControllerSourceType而不是。我应该使用另一种方法来执行此操作,还是有一种简单的方法可以使UIImageControllerSourceType成为对象?我觉得这不应该太难,但我现在已经苦苦挣扎了一段时间......

- (void)showModalTwoImageSearchViewControllerWithSourceType:(UIImagePickerControllerSourceType *)sourceType {

if (self.modalViewController) {        
    [self performSelector:@selector(showModalTwoImageSearchViewControllerWithSourceType:)
               withObject:sourceType
               afterDelay:0.1f];
    return;
}
// present second modal view - remembering to deal with cases of camera or photo library
if (sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
    //do one thing
}
// lets assume it was UIImagePickerControllerSourceTypeCamera
else {
    // do something else
}

}

2 个答案:

答案 0 :(得分:1)

UIImagePickerControllerSourceType最终是NSUInteger,您尝试执行的方法(performSelector one)仅在其withObject参数中使用Objective C对象,而不是C类型或指针。

您可以通过创建NSUIntegers对象并将整数填充到该对象中来传递NSNumber

要创建NSNumber对象,您可以像NSNumber numberWithUnsignedInteger方法一样轻松创建对象。

答案 1 :(得分:0)

UIImagePickerControllerSourceType是一个枚举。将它用作对象的最简单方法是使其成为NSNumber:

NSNumber *n = [NSNumber numberWithInt:sourceType];