2016-08-31 7 views
-2

私はAppleのマニュアルを調べていますが、UIApplicationなどのクラスではUIApplicationをクリックするとUIApplicationのプロパティとメソッドのシグネチャのみが表示されますが、実際のコードは表示されません。 Appleの提供するクラスの中で何が起こっているのかを知ることができるかどうかを知るには、これが貴重な情報だと思っていましたが、私たちが知っているか見ることができないのはなぜですか?Appleの文書には、実際のコードではなくプロパティとメソッドのシグネチャしか表示されないのはなぜですか?

たとえば、ここにあなたがのUIApplicationをクリック命じる場合に示されているものである:あなたの製品(この場合は、AppleのSDK)にもAPIを持つ人を提供する際

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 } 
} 
+5

この質問に答える可能性のある唯一のソースはソフトウェアメーカー(つまりApple)であり、その答えが主観的であるため、このトピックをオフトピックとして閉じることにしました。 – dasblinkenlight

+0

@dasblinkenlightよくメソッドやプロパティを正しく使用しているかどうかを知る方法はありますか?あなたへの私の質問は理にかなっていますか?私はちょうどアップルが提供するクラスを正しく使用しているかどうかを確かめようとしています。主観的に言うと、プログラミングは無限の答えを持つ芸術であると言っているのでしょうか? –

+1

@dasblinkenlight誰でもこの質問に答えることができます。アップル特有の、または主観的なものはありません。 – Lope

答えて

3

これが一般的です。実装の詳細はクリエイターに任されており、内部でどのように動作するかを知る必要はありません。あなたが知る必要があるのは、それらの製品で動作することを可能にするツールであり、それらのツールはAPIと呼ばれます。

API on wiki

実装自体、多くの場合、変更とAPIは、これらの変更は、アプリケーションを中断したり壊さないように設計されていないことができます。 コードが間違っていると、間違った前提や悪い習慣につながる可能性があります。言い換えれば、それはしばしば専有であり、実際には公的な目には意図されていない。

EDIT

あなたがそれを書い1ではありませんので、あなたは、インプリメンテーションとの関係ではありません。 Appleは実装を作成します。あなたは舞台裏で何をしていても使用します。

たとえば、beginIgnoringInteractionEventsメソッドを使用します。あなたはそれを呼び出すときに何が起こるのか分かりません。あなたが知っていることは、いったんそれを呼び出すと、相互作用イベントの取得を停止することだけです。単に内部のcheckForEventsプロパティをfalseに設定するか、ハンドラのリストからハンドラを削除するか、ハンドラの全体のビュー階層を再作成するだけで、完全に透過的です。内部について心配する必要はなく、メソッド/プロパティが何をしているのかを知る必要があります。また、Appleがその約束を守ることは保証されています(そして、あなたがしばらくして失望します。

+0

AppleのAPIは、使用するクラスのメソッドやプロパティを呼び出すときにパラメータと戻り値の型を守っている限り、AppleのAPIはクッキーカッタークラスのようなものであることに同意するのは安全でしょうか?したがって、実装は、パラメータと戻り値の型を守る限り、いくらか自由に作成することができます。<<<私はちょうどここでいくつかの明快さを探して、最後の考えを得るために苦労した。 –

+1

正確にはわかりません。 – Lope

関連する問題