我使用塊和繼承有一些極端困難。objective-c錯誤:[UIView copyWithZone:]:無法識別的選擇器發送到實例
我宣佈的.h文件塊:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
block = ^(BOOL noshow)
{
if(noshow){
AutoTracView.hidden = YES;
MarineTracView.hidden = YES;
}
};
}
return self;
}
現在我把它以及UIView的情況下傳遞給UIViewController中的一個類別:
void (^block)(BOOL);
在.M初始化
在UIViewController + extensions.m:
-(void)renderView:(int)value onCollection:(NSDictionary *)collection withBlock:block
{
block(TRUE);
NSString *index = [NSString stringWithFormat:@"%d", value];
UIView *view = [collection objectForKey:index];
view.hidden = NO;
}
不幸的是,塊(TRUE)拋出一個編譯錯誤:「調用的對象類型ID不是一個函數或函數指針」
好了,所以我得到絕望,只是試圖讓該塊的東西工作,所以我將該塊作爲參數調用刪除。並在可以工作的控制器內調用它。但隨後出現了另一個問題:
NSDictionary *const collection = [NSDictionary dictionaryWithObjectsAndKeys: //make global
@"1", AutoTracView,
@"2", MarineTracView,
nil];
它無法與上面說:
-[UIView copyWithZone:]: unrecognized selector sent to instance 0x6ee2b80
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView copyWithZone:]: unrecognized selector sent to instance 0x6ee2b80'
不允許我周圍通過我的UIView實例?
以下是一個頭文件:
@property (weak, nonatomic) IBOutlet UIView *AutoTracView;
@property (weak, nonatomic) IBOutlet UIView *MarineTracView;
林感覺,在做任何事情,現在被困。這可能看起來像是一個兩部分的問題,但我真的放棄了傳遞塊的概念,只是尋找錯誤的想法「[UIView copyWithZone:]:無法識別的選擇器發送到實例」