C pointer to 'SEL' is disallowed with ARC

I'm trying to implement pull-to-refresh for my UITableView in iOS. The implementation is nearly done except that I can't properly perform the action that will take place for the refresh operation.

    [self.refreshControl addTarget:self
                        action:(SEL)[self performSelector:@selector(fetchPhotoListWith:Using:)
                                          withObject:@"https://api.instagram.com/v1/users/self/feed?access_token="
                                          withObject:@"<my Instagram ID>"]
              forControlEvents:UIControlEventValueChanged];

The above code(initiated in viewDidLoad ) gives the following error:

Cast of an Objective-C pointer to 'SEL' is disallowed with ARC

If I remove the (SEL) casting in the front, this time I get the following error:

Implicit conversion of an Objective-C pointer to 'SEL' is disallowed with ARC

with another warning:

Incompatible pointer types sending 'id' to parameter f type 'SEL'

How can I play nice with ARC while being able to call my method with two arguments?


That isn't how target/action works, you need to pass it a selector that is one of the forms that it lists in the documentation.

You should do something like:

[self.refreshControl addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged];

And then make the refresh method call your method to refresh that data:

- (void)refresh {
    [self fetchPhotoListWith:@"https://api.instagram.com/v1/users/self/feed?access_token="
                       using:@"<My Instagram API Token>"];
}
链接地址: http://www.djcxy.com/p/44920.html

上一篇: 使WinForms TextBox的行为与浏览器的地址栏类似

下一篇: 指向'SEL'的C指针不允许使用ARC