objective-c里的方法指针IMP的用法

SGPopSelectView.h

@interface SGPopSelectView : UIView

@property (nonatomic, assign) SEL selector;

@property (nonatomic, assign) IMP functionIMP;

@end

------------------------------------------------------------------------------------------------------------------------

SGPopSelectView.m

@interface SGPopSelectView () <UITableViewDelegate, UITableViewDataSource>

@property (nonatomic, strong) UITableView *tableView;

@end

@implementation SGPopSelectView

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

_selectedIndex = indexPath.row;

[tableView reloadData];

self.functionIMP(self, _selector, indexPath.row);//当选择菜单的某一项时,调用方法指针指向的方法

}

------------------------------------------------------------------------------------------------------------------------

UIHotWordViewController.h

#import <UIKit/UIKit.h>

#import "REMenu.h"

#import "SGPopSelectView.h"

@interface UIHotWordViewController : UIViewController

@property (strong,nonatomic) REMenu *menu;

@property (retain, nonatomic) IBOutlet UIButton *btnHotWord;

@property (nonatomic, strong) SGPopSelectView *popView;

@property (nonatomic, strong) NSArray *selections;

@property (nonatomic, retain) NSString *r;

@end

------------------------------------------------------------------------------------------------------------------------

UIHotWordViewController.m

- (void)viewDidLoad {

[super viewDidLoad];

self.selections = @[@"句子",@"作品",@"作者"];

self.popView = [[SGPopSelectView alloc] init];

self.popView.selector = @selector(rows_selected:);//指定selector

self.popView.functionIMP = [self methodForSelector:@selector(rows_selected:)];//指定函数指针

}

-(void) rows_selected:(NSInteger) idx {

NSLog(@"选择了项%d", idx);//选择菜单后会调用此方法

}