Skip to content

MediaPlayer macOS xcode9 beta3

Vincent Dondain edited this page Jul 10, 2017 · 2 revisions

#MediaPlayer.framework

diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPError.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPError.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPError.h	2017-06-12 21:36:40.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPError.h	2017-06-30 01:08:44.000000000 -0400
@@ -10,7 +10,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-MP_EXTERN NSString * const MPErrorDomain NS_AVAILABLE(10_12_2, 9_3);
+MP_EXTERN NSString * const MPErrorDomain MP_API(ios(9.3), macos(10.12.2));
 
 // error codes for the MPErrorDomain
 typedef NS_ENUM(NSInteger, MPErrorCode) {
@@ -20,8 +20,8 @@
     MPErrorNetworkConnectionFailed,                 // the device could not connect to the network
     MPErrorNotFound,                                // the id could not be found in the current storefront
     MPErrorNotSupported,                            // the request is not supported (ex: trying to add items to a smart playlist)
-    MPErrorCancelled NS_ENUM_AVAILABLE_IOS(10_1),   // the request was cancelled before it could complete
-    MPErrorRequestTimedOut NS_ENUM_AVAILABLE_IOS(10_3),
-} NS_ENUM_AVAILABLE_IOS(9_3);
+    MPErrorCancelled MP_API(ios(10.1)),             // the request was cancelled before it could complete
+    MPErrorRequestTimedOut MP_API(ios(10.3)),
+} MP_API(ios(9.3));
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMediaEntity.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMediaEntity.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMediaEntity.h	2017-06-12 21:36:40.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMediaEntity.h	2017-06-30 01:08:44.000000000 -0400
@@ -17,7 +17,8 @@
 // An MPMediaEntity represents an abstract member of an MPMediaLibrary.
 // Concrete subclasses are MPMediaItem and MPMediaItemCollection.
 
-MP_API_IOS_AVAILABLE_MACOS_TVOS_PROHIBITED(4.2, 10.12.2, 4.2)
+MP_API(ios(4.2))
+MP_PROHIBITED(tvos, macos)
 @interface MPMediaEntity : NSObject <NSSecureCoding>
 
 // Returns YES for properties which can be used to construct MPMediaPropertyPredicates.
@@ -25,10 +26,10 @@
 
 // Executes a provided block with the fetched values for the given item properties, or nil if no value is available for a property.
 // In some cases, enumerating the values for multiple properties can be more efficient than fetching each individual property with -valueForProperty:.
-- (void)enumerateValuesForProperties:(NSSet<NSString *> *)properties usingBlock:(void (^)(NSString *property, id value, BOOL *stop))block NS_AVAILABLE_IOS(4_0);
+- (void)enumerateValuesForProperties:(NSSet<NSString *> *)properties usingBlock:(void (^)(NSString *property, id value, BOOL *stop))block MP_API(ios(4.0));
 
 // Read-only support for Objective-C subscripting syntax with MPMediaEntity property constants.
-- (nullable id)objectForKeyedSubscript:(id)key NS_AVAILABLE_IOS(8_0);
+- (nullable id)objectForKeyedSubscript:(id)key MP_API(ios(8.0));
 
 // Returns the value for the given entity property.
 // MPMediaItem and MPMediaPlaylist have their own properties
@@ -36,8 +37,8 @@
 
 #pragma mark - Properties
 
-MP_EXTERN NSString * const MPMediaEntityPropertyPersistentID NS_AVAILABLE(10_12_2, 4_2);        // filterable
-@property (nonatomic, readonly) MPMediaEntityPersistentID persistentID NS_AVAILABLE_IOS(7_0);
+MP_EXTERN NSString * const MPMediaEntityPropertyPersistentID MP_API(ios(4.2));        // filterable
+@property (nonatomic, readonly) MPMediaEntityPersistentID persistentID MP_API(ios(7.0));
 
 @end
 
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMediaItem.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMediaItem.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMediaItem.h	2017-06-14 00:26:05.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPMediaItem.h	2017-06-30 04:11:14.000000000 -0400
@@ -16,177 +16,178 @@
 
 typedef NS_OPTIONS(NSUInteger, MPMediaType) {
     // audio
-    MPMediaTypeMusic                                        = 1 << 0,
-    MPMediaTypePodcast                                      = 1 << 1,
-    MPMediaTypeAudioBook                                    = 1 << 2,
-    MPMediaTypeAudioITunesU NS_ENUM_AVAILABLE(10_12_2, 5_0) = 1 << 3,
-    MPMediaTypeAnyAudio                                     = 0x00ff,
+    MPMediaTypeMusic                                            = 1 << 0,
+    MPMediaTypePodcast                                          = 1 << 1,
+    MPMediaTypeAudioBook                                        = 1 << 2,
+    MPMediaTypeAudioITunesU MP_API(ios(5.0), macos(10.12.2))    = 1 << 3,
+    MPMediaTypeAnyAudio                                         = 0x00ff,
     
-    // video (available in iOS 5.0)
-    MPMediaTypeMovie        NS_ENUM_AVAILABLE(10_12_2, 5_0) = 1 << 8,
-    MPMediaTypeTVShow       NS_ENUM_AVAILABLE(10_12_2, 5_0) = 1 << 9,
-    MPMediaTypeVideoPodcast NS_ENUM_AVAILABLE(10_12_2, 5_0) = 1 << 10,
-    MPMediaTypeMusicVideo   NS_ENUM_AVAILABLE(10_12_2, 5_0) = 1 << 11,
-    MPMediaTypeVideoITunesU NS_ENUM_AVAILABLE(10_12_2, 5_0) = 1 << 12,
-    MPMediaTypeHomeVideo    NS_ENUM_AVAILABLE(10_12_2, 7_0) = 1 << 13,
-    MPMediaTypeAnyVideo     NS_ENUM_AVAILABLE(10_12_2, 5_0) = 0xff00,
+    // video
+    MPMediaTypeMovie        MP_API(ios(5.0), macos(10.12.2))    = 1 << 8,
+    MPMediaTypeTVShow       MP_API(ios(5.0), macos(10.12.2))    = 1 << 9,
+    MPMediaTypeVideoPodcast MP_API(ios(5.0), macos(10.12.2))    = 1 << 10,
+    MPMediaTypeMusicVideo   MP_API(ios(5.0), macos(10.12.2))    = 1 << 11,
+    MPMediaTypeVideoITunesU MP_API(ios(5.0), macos(10.12.2))    = 1 << 12,
+    MPMediaTypeHomeVideo    MP_API(ios(7.0), macos(10.12.2))    = 1 << 13,
+    MPMediaTypeAnyVideo     MP_API(ios(5.0), macos(10.12.2))    = 0xff00,
     
     MPMediaTypeAny                                     = ~0UL
-} MP_API_IOS_AVAILABLE_MACOS_TVOS_PROHIBITED(3.0, 10.12.2, 3.0);
+} MP_API(ios(3.0), tvos(9.0), macos(10.12.2));
 
 // An MPMediaItem represents a single piece of media in an MPMediaLibrary.
 // Media items have a unique identifier which persists across application launches.
 
-MP_API_IOS_AVAILABLE_MACOS_TVOS_PROHIBITED(3.0, 10.12.2, 3.0)
+MP_API(ios(3.0))
+MP_PROHIBITED(tvos, macos)
 @interface MPMediaItem : MPMediaEntity
 
 #pragma mark - Properties
 
 // Properties marked filterable can also be used to build MPMediaPropertyPredicates (see MPMediaQuery.h).
 
-MP_EXTERN NSString * const MPMediaItemPropertyPersistentID NS_AVAILABLE(10_12_2, 4_2);              // filterable
-@property (nonatomic, readonly) MPMediaEntityPersistentID persistentID NS_AVAILABLE_IOS(5_0);
+MP_EXTERN NSString * const MPMediaItemPropertyPersistentID MP_API(ios(4.2), macos(10.12.2));                            // filterable
+@property (nonatomic, readonly) MPMediaEntityPersistentID persistentID MP_API(ios(5.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyMediaType;                                            // filterable
-@property (nonatomic, readonly) MPMediaType mediaType NS_AVAILABLE_IOS(7_0);
+MP_EXTERN NSString * const MPMediaItemPropertyMediaType;                                                                // filterable
+@property (nonatomic, readonly) MPMediaType mediaType MP_API(ios(7.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyTitle;                                                // filterable
-@property (nonatomic, readonly, nullable) NSString *title NS_AVAILABLE_IOS(7_0);
+MP_EXTERN NSString * const MPMediaItemPropertyTitle;                                                                    // filterable
+@property (nonatomic, readonly, nullable) NSString *title MP_API(ios(7.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyAlbumTitle;                                           // filterable
-@property (nonatomic, readonly, nullable) NSString *albumTitle NS_AVAILABLE_IOS(7_0);
+MP_EXTERN NSString * const MPMediaItemPropertyAlbumTitle;                                                               // filterable
+@property (nonatomic, readonly, nullable) NSString *albumTitle MP_API(ios(7.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyAlbumPersistentID NS_AVAILABLE(10_12_2, 4_2);         // filterable
-@property (nonatomic, readonly) MPMediaEntityPersistentID albumPersistentID NS_AVAILABLE_IOS(8_0);
+MP_EXTERN NSString * const MPMediaItemPropertyAlbumPersistentID MP_API(ios(4.2), macos(10.12.2));                       // filterable
+@property (nonatomic, readonly) MPMediaEntityPersistentID albumPersistentID MP_API(ios(8.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyArtist;                                               // filterable
-@property (nonatomic, readonly, nullable) NSString *artist NS_AVAILABLE_IOS(7_0);
+MP_EXTERN NSString * const MPMediaItemPropertyArtist;                                                                   // filterable
+@property (nonatomic, readonly, nullable) NSString *artist MP_API(ios(7.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyArtistPersistentID NS_AVAILABLE(10_12_2, 4_2);        // filterable
-@property (nonatomic, readonly) MPMediaEntityPersistentID artistPersistentID NS_AVAILABLE_IOS(8_0);
+MP_EXTERN NSString * const MPMediaItemPropertyArtistPersistentID MP_API(ios(4.2), macos(10.12.2));                      // filterable
+@property (nonatomic, readonly) MPMediaEntityPersistentID artistPersistentID MP_API(ios(8.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyAlbumArtist;                                          // filterable
-@property (nonatomic, readonly, nullable) NSString *albumArtist NS_AVAILABLE_IOS(7_0);
+MP_EXTERN NSString * const MPMediaItemPropertyAlbumArtist;                                                              // filterable
+@property (nonatomic, readonly, nullable) NSString *albumArtist MP_API(ios(7.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyAlbumArtistPersistentID NS_AVAILABLE(10_12_2, 4_2);   // filterable
-@property (nonatomic, readonly) MPMediaEntityPersistentID albumArtistPersistentID NS_AVAILABLE_IOS(8_0);
+MP_EXTERN NSString * const MPMediaItemPropertyAlbumArtistPersistentID MP_API(ios(4.2), macos(10.12.2));                 // filterable
+@property (nonatomic, readonly) MPMediaEntityPersistentID albumArtistPersistentID MP_API(ios(8.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyGenre;                                                // filterable
-@property (nonatomic, readonly, nullable) NSString *genre NS_AVAILABLE_IOS(7_0);
+MP_EXTERN NSString * const MPMediaItemPropertyGenre;                                                                    // filterable
+@property (nonatomic, readonly, nullable) NSString *genre MP_API(ios(7.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyGenrePersistentID NS_AVAILABLE(10_12_2, 4_2);         // filterable
-@property (nonatomic, readonly) MPMediaEntityPersistentID genrePersistentID NS_AVAILABLE_IOS(8_0);
+MP_EXTERN NSString * const MPMediaItemPropertyGenrePersistentID MP_API(ios(4.2), macos(10.12.2));                       // filterable
+@property (nonatomic, readonly) MPMediaEntityPersistentID genrePersistentID MP_API(ios(8.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyComposer;                                             // filterable
-@property (nonatomic, readonly, nullable) NSString *composer NS_AVAILABLE_IOS(7_0);
+MP_EXTERN NSString * const MPMediaItemPropertyComposer;                                                                 // filterable
+@property (nonatomic, readonly, nullable) NSString *composer MP_API(ios(7.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyComposerPersistentID NS_AVAILABLE(10_12_2, 4_2);      // filterable
-@property (nonatomic, readonly) MPMediaEntityPersistentID composerPersistentID NS_AVAILABLE_IOS(8_0);
+MP_EXTERN NSString * const MPMediaItemPropertyComposerPersistentID MP_API(ios(4.2), macos(10.12.2));                    // filterable
+@property (nonatomic, readonly) MPMediaEntityPersistentID composerPersistentID MP_API(ios(8.0));
 
 MP_EXTERN NSString * const MPMediaItemPropertyPlaybackDuration;
-@property (nonatomic, readonly) NSTimeInterval playbackDuration NS_AVAILABLE_IOS(7_0);
+@property (nonatomic, readonly) NSTimeInterval playbackDuration MP_API(ios(7.0));
 
 MP_EXTERN NSString * const MPMediaItemPropertyAlbumTrackNumber;
-@property (nonatomic, readonly) NSUInteger albumTrackNumber NS_AVAILABLE_IOS(7_0);
+@property (nonatomic, readonly) NSUInteger albumTrackNumber MP_API(ios(7.0));
 
 MP_EXTERN NSString * const MPMediaItemPropertyAlbumTrackCount;
-@property (nonatomic, readonly) NSUInteger albumTrackCount NS_AVAILABLE_IOS(8_0);
+@property (nonatomic, readonly) NSUInteger albumTrackCount MP_API(ios(8.0));
 
 MP_EXTERN NSString * const MPMediaItemPropertyDiscNumber;
-@property (nonatomic, readonly) NSUInteger discNumber NS_AVAILABLE_IOS(7_0);
+@property (nonatomic, readonly) NSUInteger discNumber MP_API(ios(7.0));
 
 MP_EXTERN NSString * const MPMediaItemPropertyDiscCount;
-@property (nonatomic, readonly) NSUInteger discCount NS_AVAILABLE_IOS(8_0);
+@property (nonatomic, readonly) NSUInteger discCount MP_API(ios(8.0));
 
 MP_EXTERN NSString * const MPMediaItemPropertyArtwork;
-@property (nonatomic, readonly, nullable) MPMediaItemArtwork *artwork NS_AVAILABLE_IOS(7_0);
+@property (nonatomic, readonly, nullable) MPMediaItemArtwork *artwork MP_API(ios(7.0));
 
-MP_EXTERN NSString *const MPMediaItemPropertyIsExplicit NS_AVAILABLE(10_12_2, 7_0);
-@property (nonatomic, readonly, getter = isExplicitItem) BOOL explicitItem NS_AVAILABLE_IOS(10_0);
+MP_EXTERN NSString * const MPMediaItemPropertyIsExplicit MP_API(ios(7.0), macos(10.12.2));
+@property (nonatomic, readonly, getter = isExplicitItem) BOOL explicitItem MP_API(ios(10.0));
 
 MP_EXTERN NSString * const MPMediaItemPropertyLyrics;
-@property (nonatomic, readonly, nullable) NSString *lyrics NS_AVAILABLE_IOS(8_0);
+@property (nonatomic, readonly, nullable) NSString *lyrics MP_API(ios(8.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyIsCompilation;                                       // filterable
-@property (nonatomic, readonly, getter = isCompilation) BOOL compilation NS_AVAILABLE_IOS(8_0);
+MP_EXTERN NSString * const MPMediaItemPropertyIsCompilation;                                                            // filterable
+@property (nonatomic, readonly, getter = isCompilation) BOOL compilation MP_API(ios(8.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyReleaseDate NS_AVAILABLE(10_12_2, 4_0);
-@property (nonatomic, readonly, nullable) NSDate *releaseDate NS_AVAILABLE_IOS(7_0);
+MP_EXTERN NSString * const MPMediaItemPropertyReleaseDate MP_API(ios(4.0), macos(10.12.2));
+@property (nonatomic, readonly, nullable) NSDate *releaseDate MP_API(ios(7.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyBeatsPerMinute NS_AVAILABLE(10_12_2, 4_0);
-@property (nonatomic, readonly) NSUInteger beatsPerMinute NS_AVAILABLE_IOS(8_0);
+MP_EXTERN NSString * const MPMediaItemPropertyBeatsPerMinute MP_API(ios(4.0), macos(10.12.2));
+@property (nonatomic, readonly) NSUInteger beatsPerMinute MP_API(ios(8.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyComments NS_AVAILABLE(10_12_2, 4_0);
-@property (nonatomic, readonly, nullable) NSString *comments NS_AVAILABLE_IOS(8_0);
+MP_EXTERN NSString * const MPMediaItemPropertyComments MP_API(ios(4.0), macos(10.12.2));
+@property (nonatomic, readonly, nullable) NSString *comments MP_API(ios(8.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyAssetURL NS_AVAILABLE(10_12_2, 4_0);
-@property (nonatomic, readonly, nullable) NSURL *assetURL NS_AVAILABLE_IOS(8_0);
+MP_EXTERN NSString * const MPMediaItemPropertyAssetURL MP_API(ios(4.0), macos(10.12.2));
+@property (nonatomic, readonly, nullable) NSURL *assetURL MP_API(ios(8.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyIsCloudItem NS_AVAILABLE(10_12_2, 6_0);                // filterable
-@property (nonatomic, readonly, getter = isCloudItem) BOOL cloudItem NS_AVAILABLE_IOS(8_0);
+MP_EXTERN NSString * const MPMediaItemPropertyIsCloudItem MP_API(ios(6.0), macos(10.12.2));                             // filterable
+@property (nonatomic, readonly, getter = isCloudItem) BOOL cloudItem MP_API(ios(8.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyHasProtectedAsset NS_AVAILABLE(10_12_2, 9_2);          // filterable
-@property (nonatomic, readonly, getter = hasProtectedAsset) BOOL protectedAsset NS_AVAILABLE_IOS(9_2);
+MP_EXTERN NSString * const MPMediaItemPropertyHasProtectedAsset MP_API(ios(9.2), macos(10.12.2));                       // filterable
+@property (nonatomic, readonly, getter = hasProtectedAsset) BOOL protectedAsset MP_API(ios(9.2));
 
-MP_EXTERN NSString * const MPMediaItemPropertyPodcastTitle;                                          // filterable
-@property (nonatomic, readonly, nullable) NSString *podcastTitle NS_AVAILABLE_IOS(7_0);
+MP_EXTERN NSString * const MPMediaItemPropertyPodcastTitle;                                                             // filterable
+@property (nonatomic, readonly, nullable) NSString *podcastTitle MP_API(ios(7.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyPodcastPersistentID NS_AVAILABLE(10_12_2, 4_2);        // filterable
-@property (nonatomic, readonly) MPMediaEntityPersistentID podcastPersistentID NS_AVAILABLE_IOS(8_0);
+MP_EXTERN NSString * const MPMediaItemPropertyPodcastPersistentID MP_API(ios(4.2), macos(10.12.2));                     // filterable
+@property (nonatomic, readonly) MPMediaEntityPersistentID podcastPersistentID MP_API(ios(8.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyPlayCount;                                             // filterable
-@property (nonatomic, readonly) NSUInteger playCount NS_AVAILABLE_IOS(7_0);
+MP_EXTERN NSString * const MPMediaItemPropertyPlayCount;                                                                // filterable
+@property (nonatomic, readonly) NSUInteger playCount MP_API(ios(7.0));
 
 MP_EXTERN NSString * const MPMediaItemPropertySkipCount;
-@property (nonatomic, readonly) NSUInteger skipCount NS_AVAILABLE_IOS(7_0);
+@property (nonatomic, readonly) NSUInteger skipCount MP_API(ios(7.0));
 
 MP_EXTERN NSString * const MPMediaItemPropertyRating;
-@property (nonatomic, readonly) NSUInteger rating NS_AVAILABLE_IOS(7_0);
+@property (nonatomic, readonly) NSUInteger rating MP_API(ios(7.0));
 
 MP_EXTERN NSString * const MPMediaItemPropertyLastPlayedDate;
-@property (nonatomic, readonly, nullable) NSDate *lastPlayedDate NS_AVAILABLE_IOS(7_0);
+@property (nonatomic, readonly, nullable) NSDate *lastPlayedDate MP_API(ios(7.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyUserGrouping NS_AVAILABLE(10_12_2, 4_0);
-@property (nonatomic, readonly, nullable) NSString *userGrouping NS_AVAILABLE_IOS(8_0);
+MP_EXTERN NSString * const MPMediaItemPropertyUserGrouping MP_API(ios(4.0), macos(10.12.2));
+@property (nonatomic, readonly, nullable) NSString *userGrouping MP_API(ios(8.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyBookmarkTime NS_AVAILABLE(10_12_2, 6_0);
-@property (nonatomic, readonly) NSTimeInterval bookmarkTime NS_AVAILABLE_IOS(7_0);
+MP_EXTERN NSString * const MPMediaItemPropertyBookmarkTime MP_API(ios(6.0), macos(10.12.2));
+@property (nonatomic, readonly) NSTimeInterval bookmarkTime MP_API(ios(7.0));
 
-MP_EXTERN NSString * const MPMediaItemPropertyDateAdded NS_AVAILABLE(10_12_2, 10_0);
-@property (nonatomic, readonly) NSDate *dateAdded NS_AVAILABLE_IOS(10_0);
+MP_EXTERN NSString * const MPMediaItemPropertyDateAdded MP_API(ios(10.0), macos(10.12.2));
+@property (nonatomic, readonly) NSDate *dateAdded MP_API(ios(10.0));
 
-// Matches the id used by MPMusicPlayerController to enqueue store tracks  
-MP_EXTERN NSString * const MPMediaItemPropertyPlaybackStoreID NS_AVAILABLE_IOS(10_3);
-@property (nonatomic, readonly) NSString *playbackStoreID NS_AVAILABLE_IOS(10_3);
+// Matches the id used by MPMusicPlayerController to enqueue store tracks
+MP_EXTERN NSString * const MPMediaItemPropertyPlaybackStoreID MP_API(ios(10.3));
+@property (nonatomic, readonly) NSString *playbackStoreID MP_API(ios(10.3));
 
 @end
 
 //-----------------------------------------------------
 
-MP_API(ios(3.0), tvos(3.0), macos(10.12.2))
+MP_API(ios(3.0), tvos(9.0), macos(10.12.2))
 @interface MPMediaItemArtwork : NSObject
 
 #if TARGET_OS_IPHONE
 
-- (instancetype)initWithBoundsSize:(CGSize)boundsSize requestHandler:(UIImage *(^)(CGSize size))requestHandler NS_DESIGNATED_INITIALIZER NS_AVAILABLE_IOS(10_0);
+- (instancetype)initWithBoundsSize:(CGSize)boundsSize requestHandler:(UIImage *(^)(CGSize size))requestHandler NS_DESIGNATED_INITIALIZER MP_API(ios(10.0), tvos(10.0));
 
 // Returns the artwork image for an item at a given size (in points).
 - (nullable UIImage *)imageWithSize:(CGSize)size;
 
 #else
 
-- (instancetype)initWithBoundsSize:(CGSize)boundsSize requestHandler:(NSImage *(^)(CGSize size))requestHandler NS_DESIGNATED_INITIALIZER NS_AVAILABLE_MAC(10_12_2);
+- (instancetype)initWithBoundsSize:(CGSize)boundsSize requestHandler:(NSImage *(^)(CGSize size))requestHandler NS_DESIGNATED_INITIALIZER MP_API(ios(10.12.2));
 
 // Returns the artwork image for an item at a given size (in points).
-- (nullable NSImage *)imageWithSize:(CGSize)size NS_AVAILABLE_MAC(10_12_2);
+- (nullable NSImage *)imageWithSize:(CGSize)size MP_API(ios(10.12.2));
 
 #endif
 
 @property (nonatomic, readonly) CGRect bounds; // The bounds of the full size image (in points).
-@property (nonatomic, readonly) CGRect imageCropRect NS_DEPRECATED_IOS(3_0, 10_0);
+@property (nonatomic, readonly) CGRect imageCropRect MP_DEPRECATED("cropRect is no longer used", ios(3.0, 10.0));
 
 #if TARGET_OS_IPHONE
-- (instancetype)initWithImage:(UIImage *)image NS_DEPRECATED_IOS(5_0, 10_0);
+- (instancetype)initWithImage:(UIImage *)image MP_DEPRECATED("Use -initWithBoundsSize:requestHandler:", ios(5.0, 10.0));
 #endif
 
 - (id)init NS_UNAVAILABLE;
@@ -194,3 +195,4 @@
 @end
 
 NS_ASSUME_NONNULL_END
+
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPNowPlayingInfoCenter.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPNowPlayingInfoCenter.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPNowPlayingInfoCenter.h	2017-06-16 00:48:57.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPNowPlayingInfoCenter.h	2017-06-30 04:11:14.000000000 -0400
@@ -39,7 +39,7 @@
     MPNowPlayingInfoMediaTypeNone = 0,
     MPNowPlayingInfoMediaTypeAudio,
     MPNowPlayingInfoMediaTypeVideo,
-} NS_AVAILABLE(10_12_2, 10_0);
+} MP_API(ios(10.0), macos(10.12.2));
 
 typedef NS_ENUM(NSUInteger, MPNowPlayingPlaybackState) {
     MPNowPlayingPlaybackStateUnknown = 0,
@@ -76,12 +76,12 @@
 // Note the elapsed time will be automatically extrapolated from the previously 
 // provided elapsed time and playback rate, so updating this property frequently
 // is not required (or recommended.)
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyElapsedPlaybackTime NS_AVAILABLE(10_12_2, 5_0); // NSNumber (double)
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyElapsedPlaybackTime MP_API(ios(5.0), macos(10.12.2)); // NSNumber (double)
 
 // The playback rate of the now playing item, with 1.0 representing normal 
 // playback. For example, 2.0 would represent playback at twice the normal rate.
 // If not specified, assumed to be 1.0.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyPlaybackRate NS_AVAILABLE(10_12_2, 5_0); // NSNumber (double)
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyPlaybackRate MP_API(ios(5.0), macos(10.12.2)); // NSNumber (double)
 
 // The "default" playback rate of the now playing item. You should set this
 // property if your app is playing a media item at a rate other than 1.0 in a
@@ -90,53 +90,53 @@
 // playback rate should also be 2.0. Conversely, if you are playing back content
 // at a normal rate (1.0) but the user is fast-forwarding your content at a rate
 // greater than 1.0, then the default playback rate should be set to 1.0.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyDefaultPlaybackRate NS_AVAILABLE(10_12_2, 8_0); // NSNumber (double)
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyDefaultPlaybackRate MP_API(ios(8.0), macos(10.12.2)); // NSNumber (double)
 
 // The index of the now playing item in the application's playback queue.
 // Note that the queue uses zero-based indexing, so the index of the first item 
 // would be 0 if the item should be displayed as "item 1 of 10".
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyPlaybackQueueIndex NS_AVAILABLE(10_12_2, 5_0); // NSNumber (NSUInteger)
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyPlaybackQueueIndex MP_API(ios(5.0), macos(10.12.2)); // NSNumber (NSUInteger)
 
 // The total number of items in the application's playback queue.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyPlaybackQueueCount NS_AVAILABLE(10_12_2, 5_0); // NSNumber (NSUInteger)
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyPlaybackQueueCount MP_API(ios(5.0), macos(10.12.2)); // NSNumber (NSUInteger)
 
 // The chapter currently being played. Note that this is zero-based.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyChapterNumber NS_AVAILABLE(10_12_2, 5_0); // NSNumber (NSUInteger)
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyChapterNumber MP_API(ios(5.0), macos(10.12.2)); // NSNumber (NSUInteger)
 
 // The total number of chapters in the now playing item.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyChapterCount NS_AVAILABLE(10_12_2, 5_0); // NSNumber (NSUInteger)
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyChapterCount MP_API(ios(5.0), macos(10.12.2)); // NSNumber (NSUInteger)
 
 // A boolean denoting whether the now playing item is a live stream.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyIsLiveStream NS_AVAILABLE(10_12_2, 10_0); // NSNumber (BOOL)
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyIsLiveStream MP_API(ios(10.0), macos(10.12.2)); // NSNumber (BOOL)
 
 // A list of available language option groups in the now playing item
 // Only one language option in a given group can be played at once.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyAvailableLanguageOptions NS_AVAILABLE(10_12_2, 9_0); // NSArrayRef of MPNowPlayingInfoLanguageOptionGroup
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyAvailableLanguageOptions MP_API(ios(9.0), macos(10.12.2)); // NSArrayRef of MPNowPlayingInfoLanguageOptionGroup
 
 // A list of currently active language options in the now playing item.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyCurrentLanguageOptions NS_AVAILABLE(10_12_2, 9_0); // NSArray of MPNowPlayingInfoLanguageOption
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyCurrentLanguageOptions MP_API(ios(9.0), macos(10.12.2)); // NSArray of MPNowPlayingInfoLanguageOption
 
 // An identifier that represents the collection to which the now playing item belongs.
 // This can refer to an artist, album, playlist, etc.
 // This can be used to ask the now playing app to resume playback of the collection.
-MP_EXTERN NSString *const MPNowPlayingInfoCollectionIdentifier NS_AVAILABLE(10_12_2, 9_3); // NSString
+MP_EXTERN NSString * const MPNowPlayingInfoCollectionIdentifier MP_API(ios(9.3), macos(10.12.2)); // NSString
 
 // An opaque identifier that uniquely represents the now playing item,
 // even across app relaunches. This can be in any format and is only used to
 // reference this item back to the now playing app.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyExternalContentIdentifier NS_AVAILABLE(10_12_2, 10_0); // NSString
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyExternalContentIdentifier MP_API(ios(10.0), macos(10.12.2)); // NSString
 
 // An optional opaque identifier that uniquely represents the profile that the
 // now playing item is being played from, even across app relauches.
 // This can be in any format and is only used to reference this profile back to
 // the now playing app.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyExternalUserProfileIdentifier NS_AVAILABLE(10_12_2, 10_0); // NSString
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyExternalUserProfileIdentifier MP_API(ios(10.0), macos(10.12.2)); // NSString
 
 // A unique string that identifies a service provider. If the now playing item
 // belongs to a channel or subscription service, this key can be used to
 // coordinate various types of now playing content from a particular service
 // provider.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyServiceIdentifier NS_AVAILABLE(10_13, 11_0); // NSString
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyServiceIdentifier MP_API(ios(11.0), macos(10.13)); // NSString
 
 // Represents the current playback progress of the now playing item.
 // 0.0 = not watched/listened/viewed, 1.0 = fully watched/listened/viewed
@@ -144,15 +144,15 @@
 // as it is used as a high level indicator as to how far along the user is.
 // For example, a movie may wish to set the now playing item as fully watched
 // when the credits begin to roll.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyPlaybackProgress NS_AVAILABLE(10_12_2, 10_0); // NSNumber (float)
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyPlaybackProgress MP_API(ios(10.0), macos(10.12.2)); // NSNumber (float)
 
 // Indicates the media type of the now playing item
 // This can be used to determine what kind of user interface the system displays.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyMediaType NS_AVAILABLE(10_12_2, 10_0); // NSNumber (MPNowPlayingInfoMediaType)
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyMediaType MP_API(ios(10.0), macos(10.12.2)); // NSNumber (MPNowPlayingInfoMediaType)
 
 // A URL pointing to the now playing item's underlying audio/video asset. This
 // property is used by system UI when video thumbnails or audio waveform
 // visualizations are applicable.
-MP_EXTERN NSString *const MPNowPlayingInfoPropertyAssetURL NS_AVAILABLE(10_12_3, 10_3); // NSURL
+MP_EXTERN NSString * const MPNowPlayingInfoPropertyAssetURL MP_API(ios(10.3), macos(10.12.3)); // NSURL
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPNowPlayingInfoLanguageOption.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPNowPlayingInfoLanguageOption.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPNowPlayingInfoLanguageOption.h	2017-06-12 21:36:40.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPNowPlayingInfoLanguageOption.h	2017-06-30 04:11:14.000000000 -0400
@@ -22,21 +22,21 @@
 // Common values used to to populate MPNowPlayingInfoLanguageOption's
 // characteristics property.
 // See the AVMediaSelectionOption documentation about Media Characteristics for more details.
-MP_EXTERN NSString *const MPLanguageOptionCharacteristicIsMainProgramContent NS_AVAILABLE(10_12_2, 9_0);
-MP_EXTERN NSString *const MPLanguageOptionCharacteristicIsAuxiliaryContent NS_AVAILABLE(10_12_2, 9_0);
-MP_EXTERN NSString *const MPLanguageOptionCharacteristicContainsOnlyForcedSubtitles NS_AVAILABLE(10_12_2, 9_0);
-MP_EXTERN NSString *const MPLanguageOptionCharacteristicTranscribesSpokenDialog NS_AVAILABLE(10_12_2, 9_0);
-MP_EXTERN NSString *const MPLanguageOptionCharacteristicDescribesMusicAndSound NS_AVAILABLE(10_12_2, 9_0);
-MP_EXTERN NSString *const MPLanguageOptionCharacteristicEasyToRead NS_AVAILABLE(10_12_2, 9_0);
-MP_EXTERN NSString *const MPLanguageOptionCharacteristicDescribesVideo NS_AVAILABLE(10_12_2, 9_0);
-MP_EXTERN NSString *const MPLanguageOptionCharacteristicLanguageTranslation NS_AVAILABLE(10_12_2, 9_0);
-MP_EXTERN NSString *const MPLanguageOptionCharacteristicDubbedTranslation NS_AVAILABLE(10_12_2, 9_0);
-MP_EXTERN NSString *const MPLanguageOptionCharacteristicVoiceOverTranslation NS_AVAILABLE(10_12_2, 9_0);
+MP_EXTERN NSString * const MPLanguageOptionCharacteristicIsMainProgramContent MP_API(ios(9.0), macos(10.12.2));
+MP_EXTERN NSString * const MPLanguageOptionCharacteristicIsAuxiliaryContent MP_API(ios(9.0), macos(10.12.2));
+MP_EXTERN NSString * const MPLanguageOptionCharacteristicContainsOnlyForcedSubtitles MP_API(ios(9.0), macos(10.12.2));
+MP_EXTERN NSString * const MPLanguageOptionCharacteristicTranscribesSpokenDialog MP_API(ios(9.0), macos(10.12.2));
+MP_EXTERN NSString * const MPLanguageOptionCharacteristicDescribesMusicAndSound MP_API(ios(9.0), macos(10.12.2));
+MP_EXTERN NSString * const MPLanguageOptionCharacteristicEasyToRead MP_API(ios(9.0), macos(10.12.2));
+MP_EXTERN NSString * const MPLanguageOptionCharacteristicDescribesVideo MP_API(ios(9.0), macos(10.12.2));
+MP_EXTERN NSString * const MPLanguageOptionCharacteristicLanguageTranslation MP_API(ios(9.0), macos(10.12.2));
+MP_EXTERN NSString * const MPLanguageOptionCharacteristicDubbedTranslation MP_API(ios(9.0), macos(10.12.2));
+MP_EXTERN NSString * const MPLanguageOptionCharacteristicVoiceOverTranslation MP_API(ios(9.0), macos(10.12.2));
 
 typedef NS_ENUM(NSUInteger, MPNowPlayingInfoLanguageOptionType) {
     MPNowPlayingInfoLanguageOptionTypeAudible,
     MPNowPlayingInfoLanguageOptionTypeLegible,
-} NS_ENUM_AVAILABLE(10_12_2, 9_0);
+} MP_API(ios(9.0), macos(10.12.2));
 
 // -----------------------------------------------------------------------------
 
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPPlayableContentManagerContext.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPPlayableContentManagerContext.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPPlayableContentManagerContext.h	2017-06-12 21:36:40.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPPlayableContentManagerContext.h	2017-06-30 01:08:44.000000000 -0400
@@ -11,7 +11,8 @@
 /// MPPlayableContentManagerContext represents the current state of
 /// the playable content endpoint. A context is retrievable from an instance
 /// of MPPlayableContentManager.
-MP_API_IOS_AVAILABLE_MACOS_TVOS_PROHIBITED(8.4, 10.12.2, 8.4)
+MP_API(ios(8.4))
+MP_PROHIBITED(tvos, macos)
 @interface MPPlayableContentManagerContext : NSObject
 
 /// The number of items the content server will display when content limiting is enforced.
@@ -23,7 +24,7 @@
 
 /// Represents whether content limits are being enforced by the content server or not.
 @property (nonatomic, readonly) BOOL contentLimitsEnforced;
-@property (nonatomic, readonly) BOOL contentLimitsEnabled NS_DEPRECATED_IOS(8_4, 9_0, "Use contentLimitsEnforced");
+@property (nonatomic, readonly) BOOL contentLimitsEnabled MP_DEPRECATED_WITH_REPLACEMENT("contentLimitsEnforced", ios(8.4, 9.0));
 
 /// Represents whether the content server is available or not.
 @property (nonatomic, readonly) BOOL endpointAvailable;
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteCommand.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteCommand.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteCommand.h	2017-06-14 00:26:05.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteCommand.h	2017-07-03 22:55:50.000000000 -0400
@@ -25,11 +25,11 @@
     /// available that is required for this command. As an example, an
     /// application would return this error code if an "enable language option"
     /// command is received, but nothing is currently playing.
-    MPRemoteCommandHandlerStatusNoActionableNowPlayingItem NS_ENUM_AVAILABLE(10_12_2, 9_1) = 110,
+    MPRemoteCommandHandlerStatusNoActionableNowPlayingItem MP_API(ios(9.1), macos(10.12.2)) = 110,
     
     /// The command could not be executed for another reason.
     MPRemoteCommandHandlerStatusCommandFailed = 200
-} NS_ENUM_AVAILABLE(10_12_2, 7_1);
+} MP_API(ios(7.1), macos(10.12.2));
 
 MP_API(ios(7.1), tvos(7.1), macos(10.12.2))
 @interface MPRemoteCommand : NSObject
@@ -81,7 +81,7 @@
 /// An optional shorter version of the localized title for this feedback
 /// command. MediaPlayer uses this property to display this command's title on
 /// remote control interfaces with little screen space.
-@property (nonatomic, copy) NSString *localizedShortTitle NS_AVAILABLE_IOS(8_0);
+@property (nonatomic, copy) NSString *localizedShortTitle MP_API(ios(8.0));
 
 @end
 
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteCommandCenter.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteCommandCenter.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteCommandCenter.h	2017-06-12 21:36:40.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteCommandCenter.h	2017-06-30 01:08:44.000000000 -0400
@@ -27,8 +27,8 @@
 @property (nonatomic, readonly) MPRemoteCommand *playCommand;
 @property (nonatomic, readonly) MPRemoteCommand *stopCommand;
 @property (nonatomic, readonly) MPRemoteCommand *togglePlayPauseCommand;
-@property (nonatomic, readonly) MPRemoteCommand *enableLanguageOptionCommand NS_AVAILABLE(10_12_2, 9_0);
-@property (nonatomic, readonly) MPRemoteCommand *disableLanguageOptionCommand NS_AVAILABLE(10_12_2, 9_0);
+@property (nonatomic, readonly) MPRemoteCommand *enableLanguageOptionCommand MP_API(ios(9.0), macos(10.12.2));
+@property (nonatomic, readonly) MPRemoteCommand *disableLanguageOptionCommand MP_API(ios(9.0), macos(10.12.2));
 @property (nonatomic, readonly) MPChangePlaybackRateCommand *changePlaybackRateCommand;
 @property (nonatomic, readonly) MPChangeRepeatModeCommand *changeRepeatModeCommand;
 @property (nonatomic, readonly) MPChangeShuffleModeCommand *changeShuffleModeCommand;
@@ -44,7 +44,7 @@
 // Seek Commands
 @property (nonatomic, readonly) MPRemoteCommand *seekForwardCommand;
 @property (nonatomic, readonly) MPRemoteCommand *seekBackwardCommand;
-@property (nonatomic, readonly) MPChangePlaybackPositionCommand *changePlaybackPositionCommand NS_AVAILABLE(10_12_2, 9_1);
+@property (nonatomic, readonly) MPChangePlaybackPositionCommand *changePlaybackPositionCommand MP_API(ios(9.1), macos(10.12.2));
 
 // Rating Command
 @property (nonatomic, readonly) MPRatingCommand *ratingCommand;
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteCommandEvent.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteCommandEvent.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteCommandEvent.h	2017-06-16 00:45:40.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteCommandEvent.h	2017-06-30 01:08:44.000000000 -0400
@@ -36,7 +36,7 @@
 typedef NS_ENUM(NSUInteger, MPSeekCommandEventType) {
     MPSeekCommandEventTypeBeginSeeking,
     MPSeekCommandEventTypeEndSeeking
-} NS_ENUM_AVAILABLE(10_12_2, 7_1);
+} MP_API(ios(7.1), macos(10.12.2));
 
 MP_API(ios(7.1), tvos(7.1), macos(10.12.2))
 @interface MPSeekCommandEvent : MPRemoteCommandEvent
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteControlTypes.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteControlTypes.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteControlTypes.h	2017-06-12 21:36:40.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MPRemoteControlTypes.h	2017-06-30 01:08:44.000000000 -0400
@@ -12,16 +12,16 @@
     MPShuffleTypeOff,           /// Nothing is shuffled during playback.
     MPShuffleTypeItems,         /// Individual items are shuffled during playback.
     MPShuffleTypeCollections,   /// Collections (e.g. albums) are shuffled during playback.
-} NS_ENUM_AVAILABLE(10_12_2, 3_0);
+} MP_API(ios(3.0), macos(10.12.2));
 
 typedef NS_ENUM(NSInteger, MPRepeatType) {
     MPRepeatTypeOff,    /// Nothing is repeated during playback.
     MPRepeatTypeOne,    /// Repeat a single item indefinitely.
     MPRepeatTypeAll,    /// Repeat the current container or playlist indefinitely.
-} NS_ENUM_AVAILABLE(10_12_2, 3_0);
+} MP_API(ios(3.0), macos(10.12.2));
 
 typedef NS_ENUM(NSInteger, MPChangeLanguageOptionSetting) {
     MPChangeLanguageOptionSettingNone, /// No Language Option Change
     MPChangeLanguageOptionSettingNowPlayingItemOnly, /// The Language Option change applies only the the now playing item
     MPChangeLanguageOptionSettingPermanent /// The Language Option change should apply to all future playback
-} NS_ENUM_AVAILABLE(10_12_2, 9_4);
+} MP_API(ios(9.3), macos(10.12.2));
diff -ruN /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MediaPlayerDefines.h /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MediaPlayerDefines.h
--- /Applications/Xcode9-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MediaPlayerDefines.h	2017-06-12 21:36:40.000000000 -0400
+++ /Applications/Xcode9-beta3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/MediaPlayer.framework/Headers/MediaPlayerDefines.h	2017-06-30 01:08:44.000000000 -0400
@@ -5,37 +5,39 @@
 //  Copyright 2008 Apple, Inc. All rights reserved.
 //
 
+#import <Availability.h>
+#import <TargetConditionals.h>
+
 #ifdef __cplusplus
 #define MP_EXTERN extern "C" __attribute__((visibility ("default")))
 #else
-#define MP_EXTERN     extern __attribute__((visibility ("default")))
+#define MP_EXTERN extern __attribute__((visibility ("default")))
 #endif
 
-#define MP_EXTERN_CLASS                       __attribute__((visibility("default")))
-#define MP_EXTERN_CLASS_AVAILABLE(version)    __attribute__((visibility("default"))) NS_CLASS_AVAILABLE(NA, version)
-#define MP_EXTERN_CLASS_AVAILABLE_X(ios, mac) __attribute__((visibility("default"))) NS_CLASS_AVAILABLE(mac, ios)
-
-#define MP_API __attribute__((visibility("default"))) __API_AVAILABLE
-#define MP_DEPRECATED __attribute__((visibility("default"))) __API_DEPRECATED
-#define MP_DEPRECATED_WITH_REPLACEMENT __attribute__((visibility("default"))) __API_DEPRECATED_WITH_REPLACEMENT
-#define MP_UNAVAILABLE __attribute__((visibility("default"))) __API_UNAVAILABLE
+#define MP_API(...) __API_AVAILABLE(__VA_ARGS__)
+#define MP_DEPRECATED(...) __API_DEPRECATED(__VA_ARGS__)
+#define MP_UNAVAILABLE(...) __API_UNAVAILABLE(__VA_ARGS__)
+#define MP_DEPRECATED_WITH_REPLACEMENT(...) __API_DEPRECATED_WITH_REPLACEMENT(__VA_ARGS__)
+
+#pragma mark - Prohibited
+
+#define __MP_PROHIBITED_PLATFORM_macos macos,unavailable
+#define __MP_PROHIBITED_PLATFORM_macosx macosx,unavailable
+#define __MP_PROHIBITED_PLATFORM_ios ios,unavailable
+#define __MP_PROHIBITED_PLATFORM_watchos watchos,unavailable
+#define __MP_PROHIBITED_PLATFORM_tvos tvos,unavailable
+#define __MP_PROHIBITED_PLATFORM_bridgeos bridgeos,unavailable
 
 #if __has_include(<AvailabilityProhibitedInternal.h>)
-#define MP_API_IOS_AVAILABLE_TVOS_PROHIBITED(iosver, macosver, tvosver) MP_API(ios(iosver), tvos(tvosver), macos(macosver)) __TVOS_PROHIBITED
-#define MP_API_IOS_AVAILABLE_MACOS_TVOS_PROHIBITED(iosver, macosver, tvosver) MP_API(ios(iosver), tvos(tvosver), macos(macosver)) __TVOS_PROHIBITED
-#define MP_API_IOS_DEPRECATED_TVOS_PROHIBITED(iosintro, iosdep, macosintro, macosdep, tvosintro, tvosdep) \
-    MP_DEPRECATED("No longer supported", ios(iosintro, iosdep), tvos(tvosintro, tvosdep), macos(macosintro, macosdep)) __TVOS_PROHIBITED
-#define MP_API_IOS_DEPRECATED_MACOS_TVOS_PROHIBITED(iosintro, iosdep, macosintro, macosdep, tvosintro, tvosdep) \
-    MP_DEPRECATED("No longer supported", ios(iosintro, iosdep), tvos(tvosintro, tvosdep), macos(macosintro, macosdep)) __TVOS_PROHIBITED
-#define MP_API_IOS_DEPRECATED_WITH_REPLACEMENT_MACOS_TVOS_PROHIBITED(replacement, iosintro, iosdep, macosintro, macosdep, tvosintro, tvosdep) \
-    MP_DEPRECATED_WITH_REPLACEMENT(replacement, ios(iosintro, iosdep), tvos(tvosintro, tvosdep), macos(macosintro, macosdep)) __TVOS_PROHIBITED
+#define __MP_P(x)
 #else
-#define MP_API_IOS_AVAILABLE_TVOS_PROHIBITED(iosver, macosver, tvosver) MP_API(ios(iosver), macos(macosver)) __TVOS_PROHIBITED
-#define MP_API_IOS_AVAILABLE_MACOS_TVOS_PROHIBITED(iosver, macosver, tvosver) MP_API(ios(iosver)) __TVOS_PROHIBITED __OS_AVAILABILITY(macosx,unavailable)
-#define MP_API_IOS_DEPRECATED_TVOS_PROHIBITED(iosintro, iosdep, macosintro, macosdep, tvosintro, tvosdep) \
-    MP_DEPRECATED("No longer supported", ios(iosintro, iosdep), macos(macosintro, macosdep)) __TVOS_PROHIBITED
-#define MP_API_IOS_DEPRECATED_MACOS_TVOS_PROHIBITED(iosintro, iosdep, macosintro, macosdep, tvosintro, tvosdep) \
-    MP_DEPRECATED("No longer supported", ios(iosintro, iosdep)) __TVOS_PROHIBITED __OS_AVAILABILITY(macosx,unavailable)
-#define MP_API_IOS_DEPRECATED_WITH_REPLACEMENT_MACOS_TVOS_PROHIBITED(replacement, iosintro, iosdep, macosintro, macosdep, tvosintro, tvosdep) \
-    MP_DEPRECATED_WITH_REPLACEMENT(replacement, ios(iosintro, iosdep)) __TVOS_PROHIBITED __OS_AVAILABILITY(macosx,unavailable)
+#define __MP_P(x) __attribute__((availability(__MP_PROHIBITED_PLATFORM_##x)))
 #endif
+
+#define __MP_PROHIBITED1(x) __MP_P(x)
+#define __MP_PROHIBITED2(x,y) __MP_P(x) __MP_P(y)
+#define __MP_PROHIBITED3(x,y,z) __MP_PROHIBITED2(x,y) __MP_P(z)
+#define __MP_PROHIBITED4(x,y,z,t) __MP_PROHIBITED3(x,y) __MP_P(b)
+#define __MP_PROHIBITED_GET_MACRO(_1,_2,_3,_4,NAME,...) NAME
+
+#define MP_PROHIBITED(...) __MP_PROHIBITED_GET_MACRO(__VA_ARGS__,__MP_PROHIBITED4,__MP_PROHIBITED3,__MP_PROHIBITED2,__MP_PROHIBITED1)(__VA_ARGS__)
Clone this wiki locally