我不确定我的代码是否错误,但编译时没有错误。
我有一个刷新按钮,用于刷新TableView,这里有以下代码:
- (IBAction)refreshButton:(UIButton *)sender {
UIButton *refreshButton = [UIButton alloc];
[refreshButton addTarget:self action:@selector(scanBLEDevices:) forControlEvents:UIControlEventTouchUpInside]; }
- (void)scanBLEDevices:(id)sender {
[manager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:BLEService]] options:nil];
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(stopScan:) userInfo:nil repeats:NO];}
此代码中有错误吗?我不确定这第二行,是否允许:
UIButton *refreshButton = [UIButton alloc];
答案 0 :(得分:2)
没有"错误"在你的代码中,就像你说的那样,它符合你的要求。 "错误"这不仅仅是语法,它的背景。
如果您希望按钮触发并执行扫描, 那么你应该在你的方法中调用你的方法
scanBLEDevices:
IBAction
方法refreshButton:
。
在您的代码段中,通过在刷新按钮方法中创建 new UIButton
,您只需将动作分配给尚未初始化的按钮,和< / em>没有提供触发按钮的机会(它在此方法中创建并仅存在 )。
假设您已在故事板中正确附加了操作方法,我建议您使用以下内容替换简单的IBAction
方法:
- (IBAction)refreshButton:(UIButton *)sender {
[self scanBLEDevices:sender];
}
由于您的scanBLEDevices:
方法需要id
发件人,因此您可以传递按钮(因为毕竟您不能在BLE方法中使用它),远离lol)。
希望这可以帮助您指明正确的方向。快乐的编码!
注意:如果您不确定此处允许allocation
的时间/地点,我建议您阅读有关IBAction
,目标和发件人的一些常见做法。在代码中使用UIButton
元素。