Ios Objective-C指针类型的隐式转换';派送"来源"和"x27 ;;

Ios Objective-C指针类型的隐式转换';派送"来源"和"x27 ;;,ios,objective-c,grand-central-dispatch,Ios,Objective C,Grand Central Dispatch,我试图学习如何使用GCD(),并从apple文档中编写其中一些代码。但它不能在Xcode中编译。我不知道该怎么修 - (void)viewDidLoad { [super viewDidLoad]; dispatch_source_type_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue()); if (timer) {

我试图学习如何使用GCD(),并从apple文档中编写其中一些代码。但它不能在Xcode中编译。我不知道该怎么修

- (void)viewDidLoad
{
    [super viewDidLoad];

    dispatch_source_type_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());

    if (timer) {
        dispatch_source_set_timer(timer, dispatch_walltime(NULL, 0), 30ull * NSEC_PER_SEC, 1ull * NSEC_PER_SEC);
        dispatch_source_set_event_handler(timer, ^{
            NSLog(@"YES!");
        });
        dispatch_resume(timer);
    }

    // Do any additional setup after loading the view, typically from a nib.
}
错误:

/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:22:36: Implicit conversion of Objective-C pointer type 'dispatch_source_t' (aka 'NSObject<OS_dispatch_source> *') to C pointer type 'dispatch_source_type_t' (aka 'const struct dispatch_source_type_s *') requires a bridged cast
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:22:28: Incompatible pointer types initializing 'dispatch_source_type_t' (aka 'const struct dispatch_source_type_s *') with an expression of type 'dispatch_source_t' (aka 'NSObject<OS_dispatch_source> *')
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:25:35: Implicit conversion of C pointer type 'dispatch_source_type_t' (aka 'const struct dispatch_source_type_s *') to Objective-C pointer type 'dispatch_source_t' (aka 'NSObject<OS_dispatch_source> *') requires a bridged cast
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:25:35: Incompatible pointer types passing 'dispatch_source_type_t' (aka 'const struct dispatch_source_type_s *') to parameter of type 'dispatch_source_t' (aka 'NSObject<OS_dispatch_source> *')
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:26:43: Implicit conversion of C pointer type 'dispatch_source_type_t' (aka 'const struct dispatch_source_type_s *') to Objective-C pointer type 'dispatch_source_t' (aka 'NSObject<OS_dispatch_source> *') requires a bridged cast
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:26:43: Incompatible pointer types passing 'dispatch_source_type_t' (aka 'const struct dispatch_source_type_s *') to parameter of type 'dispatch_source_t' (aka 'NSObject<OS_dispatch_source> *')
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:29:25: Implicit conversion of C pointer type 'dispatch_source_type_t' (aka 'const struct dispatch_source_type_s *') to Objective-C pointer type 'dispatch_object_t' (aka 'NSObject<OS_dispatch_object> *') requires a bridged cast
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:29:25: Incompatible pointer types passing 'dispatch_source_type_t' (aka 'const struct dispatch_source_type_s *') to parameter of type 'dispatch_object_t' (aka 'NSObject<OS_dispatch_object> *')
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:22:36:将Objective-C指针类型“dispatch\u source\t”(又名“NSObject*)隐式转换为C指针类型“dispatch\u source\u type”(又名“const struct dispatch\u source\u type\u s*)需要桥接强制转换
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:22:28:不兼容的指针类型初始化“dispatch\u source\u type\t”(又名“const struct dispatch\u source\u type\u s*),表达式类型为“dispatch\u source\u t”(又名“NSObject*”)
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:25:35:将C指针类型“dispatch\u source\u type”隐式转换为Objective-C指针类型“dispatch\u source\u t”(又名“NSObject*)需要桥接强制转换
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:25:35:不兼容的指针类型将“dispatch\u source\u type\u t”(也称为“const struct dispatch\u source\u type\u s*)传递给“dispatch\u source\u t”(也称为“NSObject*)类型的参数
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:26:43:将C指针类型“dispatch\u source\u type”隐式转换为Objective-C指针类型“dispatch\u source\u t”(又名“NSObject*)需要桥接转换
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:26:43:不兼容的指针类型将“dispatch\u source\u type\u t”(也称为“const struct dispatch\u source\u type\u s*)传递给“dispatch\u source\u t”(也称为“NSObject*)类型的参数
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:29:25:将C指针类型“dispatch\u source\u type”隐式转换为Objective-C指针类型“dispatch\u object”(又名“NSObject*)需要桥接转换
/Users/sunfmin/Developments/GCDTests/GCDTests/ViewController.m:29:25:不兼容的指针类型将“dispatch\u source\u type\t”(又名“const struct dispatch\u source\u type\u s*)传递给“dispatch\u object\t”(又名“NSObject*)类型的参数

调度源的类型为
调度源
,因此应为

dispatch_source_t timer = ...
dispatch\u source\u type\t
dispatch\u source\u create()
的第一个参数的类型,在您的例子中是
dispatch\u source\u type\u TIMER