The naming follows explicit auditing in AVAudioApplication.h, where it is defined using NS_SWIFT_NAME(AVAudioApplication.recordPermission). This is an intentional decision.
If you believe this is a mistake(+1 from me), you can report it to the framework's maintainers. Since AVAudioApplication is part of the AVKit framework in Apple's SDK, you can submit feedback through Apple's Feedback system.
typedef NS_ENUM(NSInteger, AVAudioApplicationRecordPermission) {
AVAudioApplicationRecordPermissionUndetermined = 'undt',
AVAudioApplicationRecordPermissionDenied = 'deny',
AVAudioApplicationRecordPermissionGranted = 'grnt'
} NS_SWIFT_NAME(AVAudioApplication.recordPermission);
Possible Fix:
While this might be considered a mistake, changing it directly would break source compatibility. A potential resolution would be to introduce a typealias while maintaining backward compatibility.
// AVAudioApplication.h
typedef NS_ENUM(NSInteger, AVAudioApplicationRecordPermission) {
AVAudioApplicationRecordPermissionUndetermined = 'undt',
AVAudioApplicationRecordPermissionDenied = 'deny',
AVAudioApplicationRecordPermissionGranted = 'grnt'
} NS_SWIFT_NAME(AVAudioApplication.RecordPermission);
// AVAudioApplication+Shims.swift
extension AVAudioApplication {
public typealias recordPermission = RecordPermission
}
This approach allows developers to use RecordPermission while preserving existing API compatibility.
Before Apple provides a fix, you can also manually introduce the following typealias to resolve the capitalization issue:
extension AVAudioApplication {
public typealias RecordPermission = recordPermission
}