gpt4 book ai didi

objective-c - Objective-C 中临时方法定义背后的基本原理

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:02 35 4
gpt4 key购买 nike

我开始使用 C++ 编程。因此,我很早就被教导,对于每个定义,都应该有一个声明。对于成员函数,这是一项要求。

既然我已经开始学习 Objective-C,我有点“震惊”地发现您不需要将它们配对。显然,如果你不定义一个方法,它就不会被调用。如果你不声明一个方法,而是定义它,它就会被调用。

允许这种类型的临时定义的基本原理是什么?因为我对 C++ 有偏见,所以我觉得阅读其他人的代码很烦人,因为很多次,方法没有声明。很难大致了解类的界面。

我在这里找到了几个答案:Objective c: method relation .h and .m .不幸的是,它们不是很有决定性。

最佳答案

Objective-C 和其他语言包括允许您动态定义方法的元编程工具,因此您可以声明一个特定的方法并在运行时用其他东西定义它,您可以在这个问题上看到此功能的经典示例关于how to implement method_missing like functionality on Objective-C .

至于另一端,实现但未声明的方法,在 Objective-C 上没有定义private 方法的明确方法,并且有时您希望定义只有你自己的类(class),而不是为其他人。因此,您没有在 .h 文件中声明该方法,但仍然在您的 .m 文件中实现它。

编译器通常会提示你使用了一个未定义的方法,但是你可以忽略它或者在你的.m文件中将这些私有(private)方法声明为一个特殊的类别,它看起来像这样:

@interface YourClass (PrivateMethods)
- (void) somePrivateMethod;
@end


@implementation YourClass
- (void) somePrivateMethod { NSLog(@"Something!"); }
@end

代理(本地或远程代理)等常见模式通常依赖于这些元编程工具才能使用,它们在 Java、Ruby、Python 和 Objective-C 本身等语言中非常常见。

关于objective-c - Objective-C 中临时方法定义背后的基本原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7098649/

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