我有UIView的子類,它嘗試使用以下方法調用在重置操作期間清理子視圖。iOS8「在調用本地Apple方法時沒有在選擇器中實現選擇器的方法」
[self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
這是一個Apple方法,在Apple的UIView屬性上調用。 爲什麼我看到關於選擇器未在翻譯單元中實現的方法的這種神祕的警告?我不是在項目中使用任何斯威夫特,所以應該沒有需要翻譯什麼...
更多代碼(working with THPinViewController code)THPinNumPadView.h文件:
//
// THPinNumPadView.h
// THPinViewControllerExample
//
// Created by Thomas Heß on 20.4.14.
// Copyright (c) 2014 Thomas Heß. All rights reserved.
//
#import <UIKit/UIKit.h>
@class THPinNumPadView;
@protocol THPinNumPadViewDelegate <NSObject>
@required
- (void)pinNumPadView:(THPinNumPadView *)pinNumPadView numberTapped:(NSUInteger)number;
@end
@interface THPinNumPadView : UIView
@property (nonatomic, weak) id<THPinNumPadViewDelegate> delegate;
@property (nonatomic, assign) BOOL hideLetters;
- (instancetype)initWithDelegate:(id<THPinNumPadViewDelegate>)delegate;
@end
THPinNumPadView。米的文件:
#import "THPinNumPadView.h"
#import "THPinNumButton.h"
@interface THPinNumPadView()
@property (nonatomic, assign) CGFloat hPadding;
@property (nonatomic, assign) CGFloat vPadding;
@end
@implementation THPinNumPadView
- (instancetype)initWithDelegate:(id<THPinNumPadViewDelegate>)delegate
{
self = [self init];
if (self)
{
_delegate = delegate;
}
return self;
}
- (instancetype)init
{
self = [super init];
if (self)
{
_hPadding = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? 24.0f : 20.0f;
_vPadding = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? 19.0f : 13.0f;
[self setupViews];
}
return self;
}
- (void)setupViews
{
// remove existing views
//Compiler warning here
[self.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];
NSMutableString *vFormat = [NSMutableString stringWithString:@"V:|"];
NSMutableDictionary *rowViews = [NSMutableDictionary dictionary];
//... more setup code
}
這完全錯了。這個警告有時會有誤報,但是你也扔掉了正確的警告。 cbowns可以正確回答工作而不會丟棄有效的警告。 – gnasher729 2016-12-08 16:53:00