首页 文章

XCode iOS运营商新的自定义实现

提问于
浏览
1

XCode为我的全局运算符new实现发出警告:

void *operator new(size_t blocksize);

它说:'operator new'缺少异常规范'throw(std :: bad_alloc)'

但我的实现并不打算抛出任何异常,我宁愿将其声明为

void *operator new(size_t blocksize) throw();

但是,后一种实现会导致错误:

声明中的异常规范与先前的声明不匹配

所以,问题是:我是否真的被迫(冷静下来XCode编译器)将自定义'operator new'声明为throw(std :: bad_alloc),即使它不会抛出任何异常?

1 回答

  • 2

    所以,问题是:我是否真的被迫(冷静下来XCode编译器)将自定义'operator new'声明为throw(std :: bad_alloc),即使它不会抛出任何异常?

    是的你是:

    http://developer.apple.com/library/mac/#technotes/tn2185/_index.html

    为了完全控制和可移植性,如果您替换任何这些签名,则应替换所有这些签名 . 但是,数组的默认实现只是转发到非数组形式 . 如果只替换四个非数组表单,则希望默认数组表单转发到替换表单 .

相关问题