我想创建一个UIActionSheet
,但我总是收到关于“失踪哨兵”的警告:
/ Users / .... mm:136:173:警告:方法调度中缺少哨兵[-Wsentinel]
UIActionSheet* adsl_action_sheet = [[[UIActionSheet alloc] initWithTitle:nil
delegate:(id<UIActionSheetDelegate>)self
cancelButtonTitle:[dsd_string_localizer ms_get_localized_system_string:@"Cancel"]
destructiveButtonTitle:nil
otherButtonTitles:[dsd_string_localizer ms_get_localized_system_string:@"Logoff"], [dsd_string_localizer ms_get_localized_system_string:@"Disconnect"], nil] autorelease];
我真的看不出任何错误......也许我只是失明。
包含此代码的文件是Objective-C ++文件。
我也注意到它在每个需要这样一个哨兵的地方都会显示这些“哨兵警告”。
答案 0 :(得分:1)
从编译器输出中我相信你没有在可变方法调用结束时正确地放置nil
。
答案 1 :(得分:1)
您需要使用以下内容将最终的“哨兵”nil
投射到正确的类型:
... , (NSString *)nil] autorelease];
// ^^^^^^^^^^^^
但是,我不确定为什么编译器需要这个演员。
我相信在使用-Wstrict-null-sentinel
进行编译时这是必要的(等待来自OP的确认)。