【问题标题】:IOS: How to identify a method name from method declarationIOS:如何从方法声明中识别方法名称
【发布时间】:2016-12-21 08:30:55
【问题描述】:

我是 IOS 和目标 C 的新手。 UIApplicationDelegate 附带的以下方法声明让我感到困惑:

- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

根据from Apple official site的介绍,方法名应该是didFinishLaunchingWithOptions,接受2个参数,application和launchOptions。

但基于我有限的知识,我认为该方法名为 application,它接受 2 个参数,applications 和launchOptions。 谁能帮我理解这个方法声明?

第一列之前的第一个字符串不应该代表方法名称吗?

【问题讨论】:

  • Objective-C 中似乎没有命名参数之类的东西。方法名称由列 (:) 之前的所有字符串连接

标签: ios objective-c


【解决方案1】:

如何在iOS中声明方法(使用Objective-C)请参考this official documentation

注意:从“方法可以采用参数”部分查看。

它的列表-

1) 没有参数的方法

-(void) methodWithNoArgs

2) 带 1 个参数的方法

-(void)methodWithOneArgument:(NSString*)argument1

3) 多参数方法

-(void)methodWithMultipleArguments:(NSString*)argument1 Arg2:(NSString*)argument2 Arg3:(NSString*)argument3

这里,“methodWithMultipleArguments,Arg2,Arg3”构成方法名称的多个部分。

【讨论】:

  • 我认为 Arg2 和 Arg3 被命名为命名参数,但事实证明,Objective-C 中没有命名参数之类的东西,如“方法可以采用参数”中所述。非常感谢。
【解决方案2】:

此方法名为application:didFinishLaunchingWithOptions:,它有两个参数:applicationlaunchOptions

请注意,分号包含在方法名称中。

名称不限于第一个参数之前的部分,还包括参数名称之前的每个部分。因此,它创建了非常长的方法名称,但也使语言更易于阅读。

【讨论】:

  • 感谢您的解释。
【解决方案3】:

方法名是application:didFinishLaunchingWithOptions:

和参数:applicationlaunchOptions

【讨论】:

    【解决方案4】:

    1)。每个应用程序都以 UIApplicationDelegate -application:didFinishLaunchingWithOptions: 开头(或更准确地说,-application:willFinishLaunchingWithOptions:,当实现时)。它由应用程序调用以通知其委托启动过程已完成,并且几乎可以运行了。

    2)。确定应用程序启动的原因和方式是 launchOptions 参数的职责。与 userInfo 字典一样,-application:didFinishLaunchingWithOptions: 可以获取 launchOptions 中特定命名键的信息。

    3)。其中许多键在应用程序启动时发布的 UIApplicationDidFinishLaunchingNotification 通知中也可用。查看文档以获取更多详细信息。

    4)。尽管数量众多,但将 launchOptions 键组织成组时可以更容易理解,这与启动应用程序的原因相对应。

    【讨论】:

      【解决方案5】:

      此协议消息的名称是:

      application:didFinishLaunchingWithOptions:
      

      【讨论】:

        【解决方案6】:

        可以将冒号(:)的左边部分作为名称,右边部分作为参数,当有多个参数时,方法名应该由colon (:)的所有左边部分连接产生。所以,

         - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
        

        application:didFinishLaunchingWithOptions:应该是方法名,右边的applicationlaunchOptions是参数。

        Objective - C 是一个 descriptive language,所以它的语法(方法名)应该写成任何人都可以知道这个方法会做什么以及什么参数是。因此,为了便于理解,您可以说方法名称是 didFinishLaunchingWithOptions,因为这句话给出了方法的含义,但从技术上讲,方法名称是 application:didFinishLaunchingWithOptions:。而且我们在编写自定义方法时也应该遵循这个协议(写方法名称,因为它描述方法和参数的目的)!

        理想情况下,第一个参数应该是方法类的实例,如果方法包含instance of classparameter

        【讨论】:

        • 非常感谢狮子。
        【解决方案7】:
        - (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
        

        在上述情况下:

        方法名——applicationdidFinishLaunchingWithOptions

        - 表示实例方法,+ 表示类方法,

        (BOOL)是方法的返回类型,

        application:(UIApplication *) 是应用程序对象本身,

        (NSDictionary *)launchOptions 是参数

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-11
          • 2013-08-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-16
          • 1970-01-01
          • 2021-03-24
          • 1970-01-01
          相关资源
          最近更新 更多