gpt4 book ai didi

iphone - iOS 不同类型的方法签名

转载 作者:行者123 更新时间:2023-12-01 17:41:56 26 4
gpt4 key购买 nike

在 iOS 中,我知道我们可以定义方法

 1.) -(void)sum i.e. a instance method.

2.) +(void)sum i.e. a static method.

但是写成的方法呢
 3.) (void)sum i.e without -(hyphen) and +(plus) sign 

现在的问题是:
  • 我们称之为第 3 点中写的方法?
  • 我们何时以及如何使用它们?

  • 我见过这种方法的链接是

    Exception Handling in iOS.

    检查方法
    void InstallUncaughtExceptionHandler()

    最佳答案

    要回答您的第一个问题:
    您的第 3 点)不是一种方法,它是一个普通的 C 函数原型(prototype)(即使要由编译器正确验证,它也应该至少后跟一对空括号,以便语句为 void sum() )。

    而且,关于你的第二个问题:
    您可以在 .h/.m 文件中的任何位置使用纯 C 函数声明语法,正如 Graham 指出的那样,您甚至可以在 @interface 中声明它们和 @implementation部分;这样你也可以访问 ivar。

    正如该线程中其他答案正确指出的那样,Objective-C 是 C 的超集,面向对象,因此在上述条件下,在某种程度上混合纯 C 声明语法和 Objective-C 语法是可以的。

    一般来说,可以在 Objective-C 中使用 C 风格的函数(在 @interface@implementation 之外),例如,该特定函数是一种通用用途,并且与特定类没有严格关系。这个方向的经典例子是已经提到的
    CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
    如您所见,它处理坐标和大小,但与特定的东西没有严格的关系。这是一般的。此外,这种方法特别适合您的函数不仅是通用的,而且还必须处理 C 数据类型或 C 数据结构(例如,在我们的例子中 - CGFloat - 基本类型重新定义 - 和 CGRect - C 风格的数据结构)。

    在 @interface 和 @implementation 部分中声明 C 函数是一种在不构成方法的情况下实现访问 ivars 的功能的方法,即您只能从它们所属的类中调用这些函数。

    实际上,只要进行了正确的包含(例如 stdio.h 或 fcntl.h),您就可以从 Objective-C 方法中做任何与 C 相关的事情;程序员只需质疑他/她必须实现的功能的优点,并据此了解编写 C 风格的函数是否合适,或者类/实例方法是否更合适。

    关于iphone - iOS 不同类型的方法签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16332473/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com