我不会将UIViewController的子类添加到NSMutableDictionary中,这应该没问题,因为UIViewController是一个NSObject。
这是我的代码:
NSArray *requestingPathes = [[NSArray alloc] initWithObjects:indexPath, nil];
requestingPair = [[NSMutableDictionary alloc] initWithObjectsAndKeys:requestingPathes, dele, nil];
当委托“dele”(碰巧是提到的子类)用于初始化字典“requestingPair”时,应用程序崩溃。
错误是:
-[MainViewController copyWithZone:]: unrecognized selector sent to instance 0x7446b30
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MainViewController copyWithZone:]: unrecognized selector sent to instance 0x7446b30
0x7446b30是子类“MainViewController”的地址。
为什么会这样呢?
最佳答案
-initWithObjectsAndKeys:
要求按此顺序列出对象和键的列表-交替对象,键,对象,键,nil。您正在做的是尝试将其dele
对象作为键,以便从中检索requestingPathes
值; NSDictionary对象在设置键时会复制其键,并且视图控制器不支持复制,因此会失败。大概您想做的是这样的:
requestingPair = [[NSMutableDictionary alloc] initWithObjectsAndKeys:requestingPathes, @"paths", dele, @"delegate", nil];
然后,您可以通过调用
[requestingPair objectForKey:@"delegate"]
和[requestPair objectForKey:@"paths"]
的路径来检索委托对象。