2017-07-25 49 views
17

Korzystam z jego struktury UserNotification, która jest dostępna tylko w systemie iOS 10. Deklaruję metodę, która korzysta z tego schematu i do tej pory sprawdzałem dostępność jako następująco:Jak sprawdzić dostępność API w Xcode 9

@interface MyService : NSObject 
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000 
    -(BOOL)handleWillPresentNotification:(UNNotificationContent *)notificationContent; 
#endif 
@end 

XCode 9 beta właśnie zwolnić i z tego kodu otrzymuję ostrzeżenie

'UNNotificationContent' jest częściowe: wprowadzony w iOS 10,0 opisywanie 'handleWillPresentNotification: withCompletionHandler:' o dostępności atrybut do milczenia

Pytanie brzmi: w jaki sposób opatrzyć je w kod C w celu całej metody? Wiem, że Xcode 9 wprowadził

if (@available(iOS 10, *)) { 
    // iOS 10 ObjC code 
} 

, ale jak zawinąć w nim całą metodę (w tym jej podpis)?

okrzyki

+0

Gdzie jest ta nowa składnia @available udokumentowane? –

+2

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Attributes.html – Jan

+0

Czy tworzysz framework? Wygląda na to, że potrzebujesz adnotacji dla innych programistów. – OzBoz

Odpowiedz

32

odpowiedzieć na moje własne pytanie: muszę zaznaczyć metodę używając NS_AVAILABLE_IOS makro następująco:

-(BOOL)handleWillPresentNotification:(UNNotificationContent *)notificationContent NS_AVAILABLE_IOS(10_0); 
+1

Myślę, że 'API_AVAILABLE (ios (11.0))' jest bardziej ogólny niż 'NS_ABAILABLE_IOS', ponieważ pierwszy jest zdefiniowany w nagłówku klangu i drugi jest zdefiniowany w strukturze Fundacji. – Itachi