UIApplication,用于应用程序级别的管理,实例是由系统自动创建的,通过类方法sharedApplication获取UIApplication实例。
typedef NS_ENUM(NSInteger, UIStatusBarStyle) { UIStatusBarStyleDefault, UIStatusBarStyleBlackTranslucent, UIStatusBarStyleBlackOpaque};typedef NS_ENUM(NSInteger, UIStatusBarAnimation) { UIStatusBarAnimationNone, UIStatusBarAnimationFade, UIStatusBarAnimationSlide,};// Note that UIInterfaceOrientationLandscapeLeft is equal to UIDeviceOrientationLandscapeRight (and vice versa).// This is because rotating the device to the left requires rotating the content to the right.typedef NS_ENUM(NSInteger, UIInterfaceOrientation) { UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait, UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown, UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight, UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft};/* This exception is raised if supportedInterfaceOrientations returns 0, or if preferredInterfaceOrientationForPresentation returns an orientation that is not supported.*/UIKIT_EXTERN NSString *const UIApplicationInvalidInterfaceOrientationException NS_AVAILABLE_IOS(6_0);typedef NS_OPTIONS(NSUInteger, UIInterfaceOrientationMask) { UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait), UIInterfaceOrientationMaskLandscapeLeft = (1 << UIInterfaceOrientationLandscapeLeft), UIInterfaceOrientationMaskLandscapeRight = (1 << UIInterfaceOrientationLandscapeRight), UIInterfaceOrientationMaskPortraitUpsideDown = (1 << UIInterfaceOrientationPortraitUpsideDown), UIInterfaceOrientationMaskLandscape = (UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight), UIInterfaceOrientationMaskAll = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown), UIInterfaceOrientationMaskAllButUpsideDown = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight),};#define UIDeviceOrientationIsValidInterfaceOrientation(orientation) ((orientation) == UIDeviceOrientationPortrait || (orientation) == UIDeviceOrientationPortraitUpsideDown || (orientation) == UIDeviceOrientationLandscapeLeft || (orientation) == UIDeviceOrientationLandscapeRight)#define UIInterfaceOrientationIsPortrait(orientation) ((orientation) == UIInterfaceOrientationPortrait || (orientation) == UIInterfaceOrientationPortraitUpsideDown)#define UIInterfaceOrientationIsLandscape(orientation) ((orientation) == UIInterfaceOrientationLandscapeLeft || (orientation) == UIInterfaceOrientationLandscapeRight)typedef NS_OPTIONS(NSUInteger, UIRemoteNotificationType) { UIRemoteNotificationTypeNone = 0, UIRemoteNotificationTypeBadge = 1 << 0, UIRemoteNotificationTypeSound = 1 << 1, UIRemoteNotificationTypeAlert = 1 << 2, UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3,} NS_ENUM_AVAILABLE_IOS(3_0);typedef NS_ENUM(NSInteger, UIApplicationState) { UIApplicationStateActive, UIApplicationStateInactive, UIApplicationStateBackground} NS_ENUM_AVAILABLE_IOS(4_0);typedef NSUInteger UIBackgroundTaskIdentifier;UIKIT_EXTERN const UIBackgroundTaskIdentifier UIBackgroundTaskInvalid NS_AVAILABLE_IOS(4_0);UIKIT_EXTERN const NSTimeInterval UIMinimumKeepAliveTimeout NS_AVAILABLE_IOS(4_0);typedef NS_ENUM(NSInteger, UIUserInterfaceLayoutDirection) { UIUserInterfaceLayoutDirectionLeftToRight, UIUserInterfaceLayoutDirectionRightToLeft,} NS_ENUM_AVAILABLE_IOS(5_0);@class UIView, UIWindow, UIStatusBar, UIStatusBarWindow, UILocalNotification;@protocol UIApplicationDelegate;@interface UIApplication : UIResponder+ (UIApplication *)sharedApplication;@property(nonatomic,assign) id delegate;- (void)beginIgnoringInteractionEvents; // nested. set should be set during animations & transitions to ignore touch and other events- (void)endIgnoringInteractionEvents;- (BOOL)isIgnoringInteractionEvents; // returns YES if we are at least one deep in ignoring events@property(nonatomic,getter=isIdleTimerDisabled) BOOL idleTimerDisabled; // default is NO- (BOOL)openURL:(NSURL*)url;- (BOOL)canOpenURL:(NSURL *)url NS_AVAILABLE_IOS(3_0);- (void)sendEvent:(UIEvent *)event;@property(nonatomic,readonly) UIWindow *keyWindow;@property(nonatomic,readonly) NSArray *windows;- (BOOL)sendAction:(SEL)action to:(id)target from:(id)sender forEvent:(UIEvent *)event;@property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible; // showing network spinning gear in status bar. default is NO@property(nonatomic) UIStatusBarStyle statusBarStyle; // default is UIStatusBarStyleDefault- (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated;@property(nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden;- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);// Rotate to a specific orientation. This only rotates the status bar and updates the statusBarOrientation property.// This does not change automatically if the device changes orientation.// Explicit setting of the status bar orientation is more limited in iOS 6.0 and later.@property(nonatomic) UIInterfaceOrientation statusBarOrientation;- (void)setStatusBarOrientation:(UIInterfaceOrientation)interfaceOrientation animated:(BOOL)animated;// The system only calls this method if the application delegate has not// implemented the delegate equivalent. It returns the orientations specified by// the application's info.plist. If no supported interface orientations were// specified it will return UIInterfaceOrientationMaskAll on an iPad and// UIInterfaceOrientationMaskAllButUpsideDown on a phone. The return value// should be one of the UIInterfaceOrientationMask values which indicates the// orientations supported by this application.- (NSUInteger)supportedInterfaceOrientationsForWindow:(UIWindow *)window NS_AVAILABLE_IOS(6_0);@property(nonatomic,readonly) NSTimeInterval statusBarOrientationAnimationDuration; // Returns the animation duration for the status bar during a 90 degree orientation change. It should be doubled for a 180 degree orientation change.@property(nonatomic,readonly) CGRect statusBarFrame; // returns CGRectZero if the status bar is hidden@property(nonatomic) NSInteger applicationIconBadgeNumber; // set to 0 to hide. default is 0@property(nonatomic) BOOL applicationSupportsShakeToEdit NS_AVAILABLE_IOS(3_0);@property(nonatomic,readonly) UIApplicationState applicationState NS_AVAILABLE_IOS(4_0);@property(nonatomic,readonly) NSTimeInterval backgroundTimeRemaining NS_AVAILABLE_IOS(4_0);- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void(^)(void))handler NS_AVAILABLE_IOS(4_0);- (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier NS_AVAILABLE_IOS(4_0);- (BOOL)setKeepAliveTimeout:(NSTimeInterval)timeout handler:(void(^)(void))keepAliveHandler NS_AVAILABLE_IOS(4_0);- (void)clearKeepAliveTimeout NS_AVAILABLE_IOS(4_0);@property(nonatomic,readonly,getter=isProtectedDataAvailable) BOOL protectedDataAvailable NS_AVAILABLE_IOS(4_0);@property(nonatomic,readonly) UIUserInterfaceLayoutDirection userInterfaceLayoutDirection NS_AVAILABLE_IOS(5_0);@end@interface UIApplication (UIRemoteNotifications)- (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types NS_AVAILABLE_IOS(3_0);- (void)unregisterForRemoteNotifications NS_AVAILABLE_IOS(3_0); // calls -registerForRemoteNotificationTypes with UIRemoteNotificationTypeNone// returns the enabled types, also taking into account any systemwide settings; doesn't relate to connectivity- (UIRemoteNotificationType)enabledRemoteNotificationTypes NS_AVAILABLE_IOS(3_0);@end@interface UIApplication (UILocalNotifications)- (void)presentLocalNotificationNow:(UILocalNotification *)notification NS_AVAILABLE_IOS(4_0);- (void)scheduleLocalNotification:(UILocalNotification *)notification NS_AVAILABLE_IOS(4_0); // copies notification- (void)cancelLocalNotification:(UILocalNotification *)notification NS_AVAILABLE_IOS(4_0);- (void)cancelAllLocalNotifications NS_AVAILABLE_IOS(4_0);@property(nonatomic,copy) NSArray *scheduledLocalNotifications NS_AVAILABLE_IOS(4_0); // setter added in iOS 4.2@end@interface UIApplication (UIRemoteControlEvents)- (void)beginReceivingRemoteControlEvents NS_AVAILABLE_IOS(4_0);- (void)endReceivingRemoteControlEvents NS_AVAILABLE_IOS(4_0);@end@interface UIApplication (UINewsstand)- (void)setNewsstandIconImage:(UIImage *)image;@end@interface UIApplication (UIStateRestoration)// These methods are used to inform the system that state restoration is occuring asynchronously after the application// has processed its restoration archive on launch. In the even of a crash, the system will be able to detect that it may// have been caused by a bad restoration archive and arrange to ignore it on a subsequent application launch.- (void)extendStateRestoration NS_AVAILABLE_IOS(6_0);- (void)completeStateRestoration NS_AVAILABLE_IOS(6_0);@end
UIApplicationDelegate,用于处理应用程序生命周期中各事件的。我们的应用程序中都会实现这个协议
@protocol UIApplicationDelegate@optional// 看事件处理委托的名字,基本可以理解其意义- (void)applicationDidFinishLaunching:(UIApplication *)application; - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(6_0);- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(3_0);- (void)applicationDidBecomeActive:(UIApplication *)application;- (void)applicationWillResignActive:(UIApplication *)application;- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url; // Will be deprecated at some point, please replace with application:openURL:sourceApplication:annotation:- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation NS_AVAILABLE_IOS(4_2); // no equiv. notification. return NO if the application can't open for some reason- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application; // try to clean up as much memory as possible. next step is to terminate app- (void)applicationWillTerminate:(UIApplication *)application;- (void)applicationSignificantTimeChange:(UIApplication *)application; // midnight, carrier time update, daylight savings time change- (void)application:(UIApplication *)application willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration;- (void)application:(UIApplication *)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation;- (void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame; // in screen coordinates- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame;// one of these will be called after calling -registerForRemoteNotifications- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken NS_AVAILABLE_IOS(3_0);- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error NS_AVAILABLE_IOS(3_0);- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo NS_AVAILABLE_IOS(3_0);- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification NS_AVAILABLE_IOS(4_0);- (void)applicationDidEnterBackground:(UIApplication *)application NS_AVAILABLE_IOS(4_0);- (void)applicationWillEnterForeground:(UIApplication *)application NS_AVAILABLE_IOS(4_0);- (void)applicationProtectedDataWillBecomeUnavailable:(UIApplication *)application NS_AVAILABLE_IOS(4_0);- (void)applicationProtectedDataDidBecomeAvailable:(UIApplication *)application NS_AVAILABLE_IOS(4_0);@property (nonatomic, retain) UIWindow *window NS_AVAILABLE_IOS(5_0);- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window NS_AVAILABLE_IOS(6_0);#pragma mark -- State Restoration protocol adopted by UIApplication delegate --- (UIViewController *) application:(UIApplication *)application viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents coder:(NSCoder *)coder NS_AVAILABLE_IOS(6_0);- (BOOL) application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder NS_AVAILABLE_IOS(6_0);- (BOOL) application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder NS_AVAILABLE_IOS(6_0);- (void) application:(UIApplication *)application willEncodeRestorableStateWithCoder:(NSCoder *)coder NS_AVAILABLE_IOS(6_0);- (void) application:(UIApplication *)application didDecodeRestorableStateWithCoder:(NSCoder *)coder NS_AVAILABLE_IOS(6_0);@end@interface UIApplication(UIApplicationDeprecated)@property(nonatomic,getter=isProximitySensingEnabled) BOOL proximitySensingEnabled NS_DEPRECATED_IOS(2_0, 3_0); // default is NO. see UIDevice for replacement- (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated NS_DEPRECATED_IOS(2_0, 3_2); // use -setStatusBarHidden:withAnimation:@end// If nil is specified for principalClassName, the value for NSPrincipalClass from the Info.plist is used. If there is no// NSPrincipalClass key specified, the UIApplication class is used. The delegate class will be instantiated using init.UIKIT_EXTERN int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);UIKIT_EXTERN NSString *const UITrackingRunLoopMode;// These notifications are sent out after the equivalent delegate message is calledUIKIT_EXTERN NSString *const UIApplicationDidEnterBackgroundNotification NS_AVAILABLE_IOS(4_0);UIKIT_EXTERN NSString *const UIApplicationWillEnterForegroundNotification NS_AVAILABLE_IOS(4_0);UIKIT_EXTERN NSString *const UIApplicationDidFinishLaunchingNotification;UIKIT_EXTERN NSString *const UIApplicationDidBecomeActiveNotification;UIKIT_EXTERN NSString *const UIApplicationWillResignActiveNotification;UIKIT_EXTERN NSString *const UIApplicationDidReceiveMemoryWarningNotification;UIKIT_EXTERN NSString *const UIApplicationWillTerminateNotification;UIKIT_EXTERN NSString *const UIApplicationSignificantTimeChangeNotification;UIKIT_EXTERN NSString *const UIApplicationWillChangeStatusBarOrientationNotification; // userInfo contains NSNumber with new orientationUIKIT_EXTERN NSString *const UIApplicationDidChangeStatusBarOrientationNotification; // userInfo contains NSNumber with old orientationUIKIT_EXTERN NSString *const UIApplicationStatusBarOrientationUserInfoKey; // userInfo dictionary key for status bar orientationUIKIT_EXTERN NSString *const UIApplicationWillChangeStatusBarFrameNotification; // userInfo contains NSValue with new frameUIKIT_EXTERN NSString *const UIApplicationDidChangeStatusBarFrameNotification; // userInfo contains NSValue with old frameUIKIT_EXTERN NSString *const UIApplicationStatusBarFrameUserInfoKey; // userInfo dictionary key for status bar frameUIKIT_EXTERN NSString *const UIApplicationLaunchOptionsURLKey NS_AVAILABLE_IOS(3_0); // userInfo contains NSURL with launch URLUIKIT_EXTERN NSString *const UIApplicationLaunchOptionsSourceApplicationKey NS_AVAILABLE_IOS(3_0); // userInfo contains NSString with launch app bundle IDUIKIT_EXTERN NSString *const UIApplicationLaunchOptionsRemoteNotificationKey NS_AVAILABLE_IOS(3_0); // userInfo contains NSDictionary with payloadUIKIT_EXTERN NSString *const UIApplicationLaunchOptionsLocalNotificationKey NS_AVAILABLE_IOS(4_0); // userInfo contains a UILocalNotificationUIKIT_EXTERN NSString *const UIApplicationLaunchOptionsAnnotationKey NS_AVAILABLE_IOS(3_2); // userInfo contains object with annotation property listUIKIT_EXTERN NSString *const UIApplicationProtectedDataWillBecomeUnavailable NS_AVAILABLE_IOS(4_0);UIKIT_EXTERN NSString *const UIApplicationProtectedDataDidBecomeAvailable NS_AVAILABLE_IOS(4_0);UIKIT_EXTERN NSString *const UIApplicationLaunchOptionsLocationKey NS_AVAILABLE_IOS(4_0); // app was launched in response to a CoreLocation event.UIKIT_EXTERN NSString *const UIApplicationLaunchOptionsNewsstandDownloadsKey NS_AVAILABLE_IOS(5_0); // userInfo contains an NSArray of NKAssetDownload identifiers
UIWindows,每个应用程序只有一个窗口,需要我们在程序启动时创建。
@interface UIWindow : UIView @property(nonatomic,retain) UIScreen *screen NS_AVAILABLE_IOS(3_2); // default is [UIScreen mainScreen]. changing the screen may be an expensive operation and should not be done in performance-sensitive code@property(nonatomic) UIWindowLevel windowLevel; // default = 0.0@property(nonatomic,readonly,getter=isKeyWindow) BOOL keyWindow;- (void)becomeKeyWindow; // override point for subclass. Do not call directly- (void)resignKeyWindow; // override point for subclass. Do not call directly- (void)makeKeyWindow;- (void)makeKeyAndVisible; // convenience. most apps call this to show the main window and also make it key. otherwise use view hidden property@property(nonatomic,retain) UIViewController *rootViewController NS_AVAILABLE_IOS(4_0); // default is nil- (void)sendEvent:(UIEvent *)event; // called by UIApplication to dispatch events to views inside the window- (CGPoint)convertPoint:(CGPoint)point toWindow:(UIWindow *)window; // can be used to convert to another window- (CGPoint)convertPoint:(CGPoint)point fromWindow:(UIWindow *)window; // pass in nil to mean screen- (CGRect)convertRect:(CGRect)rect toWindow:(UIWindow *)window;- (CGRect)convertRect:(CGRect)rect fromWindow:(UIWindow *)window;@endUIKIT_EXTERN const UIWindowLevel UIWindowLevelNormal;UIKIT_EXTERN const UIWindowLevel UIWindowLevelAlert;UIKIT_EXTERN const UIWindowLevel UIWindowLevelStatusBar;UIKIT_EXTERN NSString *const UIWindowDidBecomeVisibleNotification; // nilUIKIT_EXTERN NSString *const UIWindowDidBecomeHiddenNotification; // nilUIKIT_EXTERN NSString *const UIWindowDidBecomeKeyNotification; // nilUIKIT_EXTERN NSString *const UIWindowDidResignKeyNotification; // nil// Each notification includes a nil object and a userInfo dictionary containing the// begining and ending keyboard frame in screen coordinates. Use the various UIView and// UIWindow convertRect facilities to get the frame in the desired coordinate system.// Animation key/value pairs are only available for the "will" family of notification.UIKIT_EXTERN NSString *const UIKeyboardWillShowNotification;UIKIT_EXTERN NSString *const UIKeyboardDidShowNotification; UIKIT_EXTERN NSString *const UIKeyboardWillHideNotification; UIKIT_EXTERN NSString *const UIKeyboardDidHideNotification;UIKIT_EXTERN NSString *const UIKeyboardFrameBeginUserInfoKey NS_AVAILABLE_IOS(3_2); // NSValue of CGRectUIKIT_EXTERN NSString *const UIKeyboardFrameEndUserInfoKey NS_AVAILABLE_IOS(3_2); // NSValue of CGRectUIKIT_EXTERN NSString *const UIKeyboardAnimationDurationUserInfoKey NS_AVAILABLE_IOS(3_0); // NSNumber of doubleUIKIT_EXTERN NSString *const UIKeyboardAnimationCurveUserInfoKey NS_AVAILABLE_IOS(3_0); // NSNumber of NSUInteger (UIViewAnimationCurve)// Like the standard keyboard notifications above, these additional notifications include// a nil object and begin/end frames of the keyboard in screen coordinates in the userInfo dictionary.UIKIT_EXTERN NSString *const UIKeyboardWillChangeFrameNotification NS_AVAILABLE_IOS(5_0);UIKIT_EXTERN NSString *const UIKeyboardDidChangeFrameNotification NS_AVAILABLE_IOS(5_0);// These keys are superseded by UIKeyboardFrameBeginUserInfoKey and UIKeyboardFrameEndUserInfoKey.UIKIT_EXTERN NSString *const UIKeyboardCenterBeginUserInfoKey NS_DEPRECATED_IOS(2_0, 3_2);UIKIT_EXTERN NSString *const UIKeyboardCenterEndUserInfoKey NS_DEPRECATED_IOS(2_0, 3_2);UIKIT_EXTERN NSString *const UIKeyboardBoundsUserInfoKey NS_DEPRECATED_IOS(2_0, 3_2);
UIScreen 常用的方法
// 取得屏幕大小CGRect *rect = [[UIScreen mainScreen] bounds];
NS_CLASS_AVAILABLE_IOS(2_0) @interface UIScreen : NSObject {+ (NSArray *)screens NS_AVAILABLE_IOS(3_2); // all screens currently attached to the device+ (UIScreen *)mainScreen; // the device's internal screen@property(nonatomic,readonly) CGRect bounds; // Bounds of entire screen in points@property(nonatomic,readonly) CGRect applicationFrame; // Frame of application screen area in points (i.e. entire screen minus status bar if visible)@property(nonatomic,readonly) CGFloat scale NS_AVAILABLE_IOS(4_0);@property(nonatomic,readonly,copy) NSArray *availableModes NS_AVAILABLE_IOS(3_2); // The list of modes that this screen supports@property(nonatomic,readonly,retain) UIScreenMode *preferredMode NS_AVAILABLE_IOS(4_3); // Preferred mode of this screen. Choosing this mode will likely produce the best results@property(nonatomic,retain) UIScreenMode *currentMode NS_AVAILABLE_IOS(3_2); // Current mode of this screen@property(nonatomic) UIScreenOverscanCompensation overscanCompensation NS_AVAILABLE_IOS(5_0); // Default is UIScreenOverscanCompensationScale. Determines how the screen behaves if the connected display is overscanning@property(nonatomic,readonly,retain) UIScreen *mirroredScreen NS_AVAILABLE_IOS(4_3); // The screen being mirrored by the receiver. nil if mirroring is disabled or unsupported. Moving a UIWindow to this screen will disable mirroring@property(nonatomic) CGFloat brightness NS_AVAILABLE_IOS(5_0); // 0 .. 1.0, where 1.0 is maximum brightness. Only supported by main screen.@property(nonatomic) BOOL wantsSoftwareDimming NS_AVAILABLE_IOS(5_0); // Default is NO. If YES, brightness levels lower than that of which the hardware is capable are emulated in software, if neccessary. Having enabled may entail performance cost.- (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel NS_AVAILABLE_IOS(4_0);@end