我想在应用程序中禁用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
此 Hook 脚本将用 nil
替换 Foundation.framework
中的原始 NSParameterAssert
定义,您可以在 中检查此build设置运行
目标。现在 Xcode 开始使用预定义的宏构建该目标,这确实是一种 hack 方法。pod install
后,Pods
项目中的 >AFOAuth2Manager
我们来说说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/