Почему документация Apple показывает только свойства и сигнатуры методов, но не фактический код?
Я изучаю документацию Apple и хотел бы понять, как такие классы, как UIApplication, выполняют то, что делают внутри, однако, если вы нажмете команду "UIApplication", Xcode покажет только свойства UIApplication и сигнатуры методов, но не фактический код внутри методов. Я подумал, что это было бы ценной информацией, чтобы узнать, можем ли мы увидеть, что происходит внутри предоставленных Apple классов, но почему мы не можем их узнать или увидеть?
Например, вот что показано, если вы нажмете команду UIApplication:
public class UIApplication : UIResponder {
public class func sharedApplication() -> UIApplication
unowned(unsafe) public var delegate: UIApplicationDelegate?
public func beginIgnoringInteractionEvents() // nested. set should be set during animations & transitions to ignore touch and other events
public func endIgnoringInteractionEvents()
public func isIgnoringInteractionEvents() -> Bool // returns YES if we are at least one deep in ignoring events
public var idleTimerDisabled: Bool // default is NO
public func openURL(url: NSURL) -> Bool
@available(iOS 3.0, *)
public func canOpenURL(url: NSURL) -> Bool
public func sendEvent(event: UIEvent)
public var keyWindow: UIWindow? { get }
public var windows: [UIWindow] { get }
public func sendAction(action: Selector, to target: AnyObject?, from sender: AnyObject?, forEvent event: UIEvent?) -> Bool
public var networkActivityIndicatorVisible: Bool // showing network spinning gear in status bar. default is NO
// default is UIStatusBarStyleDefault
// 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.
@available(iOS 6.0, *)
public func supportedInterfaceOrientationsForWindow(window: UIWindow?) -> UIInterfaceOrientationMask
public var statusBarOrientationAnimationDuration: NSTimeInterval { get } // Returns the animation duration for the status bar during a 90 degree orientation change. It should be doubled for a 180 degree orientation change.
public var statusBarFrame: CGRect { get } // returns CGRectZero if the status bar is hidden
public var applicationIconBadgeNumber: Int // set to 0 to hide. default is 0. In iOS 8.0 and later, your application must register for user notifications using -[UIApplication registerUserNotificationSettings:] before being able to set the icon badge.
@available(iOS 3.0, *)
public var applicationSupportsShakeToEdit: Bool
@available(iOS 4.0, *)
public var applicationState: UIApplicationState { get }
@available(iOS 4.0, *)
public var backgroundTimeRemaining: NSTimeInterval { get }
@available(iOS 4.0, *)
public func beginBackgroundTaskWithExpirationHandler(handler: (() -> Void)?) -> UIBackgroundTaskIdentifier
@available(iOS 7.0, *)
public func beginBackgroundTaskWithName(taskName: String?, expirationHandler handler: (() -> Void)?) -> UIBackgroundTaskIdentifier
@available(iOS 4.0, *)
public func endBackgroundTask(identifier: UIBackgroundTaskIdentifier)
/*! The system guarantees that it will not wake up your application for a background fetch more
frequently than the interval provided. Set to UIApplicationBackgroundFetchIntervalMinimum to be
woken as frequently as the system desires, or to UIApplicationBackgroundFetchIntervalNever (the
default) to never be woken for a background fetch.
This setter will have no effect unless your application has the "fetch"
UIBackgroundMode. See the UIApplicationDelegate method
`application:performFetchWithCompletionHandler:` for more. */
@available(iOS 7.0, *)
public func setMinimumBackgroundFetchInterval(minimumBackgroundFetchInterval: NSTimeInterval)
/*! When background refresh is available for an application, it may launched or resumed in the background to handle significant
location changes, remote notifications, background fetches, etc. Observe UIApplicationBackgroundRefreshStatusDidChangeNotification to
be notified of changes. */
@available(iOS 7.0, *)
public var backgroundRefreshStatus: UIBackgroundRefreshStatus { get }
@available(iOS 4.0, *)
public var protectedDataAvailable: Bool { get }
@available(iOS 5.0, *)
public var userInterfaceLayoutDirection: UIUserInterfaceLayoutDirection { get }
// Return the size category
@available(iOS 7.0, *)
public var preferredContentSizeCategory: String { get }
}
1 ответ
Это обычная практика, когда кто-то предоставляет API для вашего продукта (в данном случае SDK Apple). Детали реализации зависят от создателя, и вам не нужно знать, как все работает внутри. Все, что вам нужно знать, это инструменты, которые позволят работать с их продуктом, и эти инструменты называются API.
Сама реализация может и часто меняется, и API разработан таким образом, что эти изменения не будут нарушать или разрушать ваше приложение. Просмотр кода может привести к неверным предположениям и / или неправильным действиям. Не говоря уже о том, что он часто является частным и не предназначен для публичного обозрения.
РЕДАКТИРОВАТЬ:
Вы не озабочены реализацией, потому что вы не тот, кто ее пишет. Apple создает реализацию, вы просто используете все, что они делают за сценой.
Например, возьмите метод beginIgnoringInteractionEvents. Вы не знаете, что именно происходит, когда вы звоните. Все, что вы знаете, это то, что как только вы позвоните, вы перестанете получать события взаимодействия. Если вы делаете это, просто устанавливая для какого-либо внутреннего свойства checkForEvents значение false, или они удаляют обработчик из списка обработчиков, или они воссоздают всю иерархию представлений, то это полностью прозрачно для вас. Вам не нужно беспокоиться о внутренних функциях, вам просто нужно знать, что делает метод / свойство, и Apple должна гарантировать, что оно выполнит свое обещание (и вы будете время от времени разочаровываться, когда сталкиваетесь с ошибка в поведении)