Xcode 15(iOS17)编译适配报错
一、Xcode 15 linking error type argument ‘nw_proxy_config_t‘ is neither an Objective-C object nor a block type
nw_proxy_config_t这个属性说iOS17才出现的,需要忽略这个属性
结合以上分析可知,解决当前问题的关键在于 -DOS_OBJECT_USE_OBJC=0 编译器标志
通过post_integrate hook修改已经生成的Pods.xcodeproj,移除-DOS_OBJECT_USE_OBJC=0编译器标志。至于为什么不用post_install hook,那是因为必须要在项目写入完成后才能修改,否则会被覆盖从而导致修改失败。
post_integrate do |installer| compiler_flags_key = 'COMPILER_FLAGS' project_path = 'Pods/Pods.xcodeproj'
project = Xcodeproj::Project.open(project_path)
project.targets.each do |target|
target.build_phases.each do |build_phases|
if build_phases.is_a?(Xcodeproj::Project::Object::PBXSourcesBuildPhase)
build_phases.files.each do |file|
if !file.settings.nil? && file.settings.key?(compiler_flags_key)
compiler_flags = file.settings[compiler_flags_key]
file.settings[compiler_flags_key] = compiler_flags.gsub(/-DOS_OBJECT_USE_OBJC=0\s*/,'')
end
end
end
end
end
project.save()
end
补充: 如果遇到类似这样的报错:Sandbox:rsync deny(1) file-write-create … 将User Script Sandboxing设置为NO即可: 
#二、unary_function No template named 'unary_function' in namespace 'std'; did you mean '__unary_function'? 
_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION
#3.NWEndpoint.hostPort(host: , port: ) crash in Xcode15