我想在应用程序中禁用NSParameterAssert
我正在使用Pod使用AFOAuth2Manager,因此无法注释或删除此特定文件中的行。此文件(AFOAuth2Manager.m)完全取决于podfile
我想在我的项目中禁用以下几行
NSParameterAssert(url);
NSParameterAssert(clientID);
NSParameterAssert(secret);
请检查AFOAuth2Manager.m文件中包含的以下代码
- (id)initWithBaseURL:(NSURL *)url
sessionConfiguration:(NSURLSessionConfiguration *)configuration
clientID:(NSString *)clientID
secret:(NSString *)secret {
NSParameterAssert(url);
NSParameterAssert(clientID);
NSParameterAssert(secret);
self = [super initWithBaseURL:url sessionConfiguration:configuration];
if (!self) {
return nil;
}
self.serviceProviderIdentifier = [self.baseURL host];
self.clientID = clientID;
self.secret = secret;
self.useHTTPBasicAuthentication = YES;
[self.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
return self;
}
您能帮我解决这个问题吗?
最佳答案
是的,您可以从技术上做到。
# Inject the target macro.
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == "AFOAuth2Manager"
target.build_configurations.each do |config|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)']
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] << 'NSParameterAssert'
end
end
end
end
该挂钩脚本会将
NSParameterAssert
中原始的Foundation.framework
定义替换为nil
,您可以在运行AFOAuth2Manager
后在Pods
项目的pod install
目标中检查此构建设置。现在,Xcode开始使用预定义的宏来构建目标,这确实是一种破解方法。让我们谈谈宏
NSParameterAssert
的用法,该宏用于在开发库时声明必需的参数。希望库调用者将nonnull
参数传递给当前方法,您(调用者)有责任在调用该方法之前检查可空性条件。因此,您的首选方式是:
if (url && clientID && secret) {
AFOAuth2Manager *manager = [[AFOAuth2Manager alloc] initWithBaseURL:url
sessionConfiguration:configuration
clientID:clientID
secret:secret];
} else {
# ...
}
关于ios - 在iOS中停用NSParameterAssert,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59084745/