gpt4 book ai didi

ios - 来自不兼容指针类型的类型分配在 objective-c 中应该总是失败吗?

转载 作者:行者123 更新时间:2023-11-28 20:54:38 26 4
gpt4 key购买 nike

我设置了一个不兼容的指针类型,但代码运行正常。我想知道原因。 X1 是 X2 代码的精确副本。

@interface ViewController : UIViewController

@property(retain,nonatomic) X1 *testProperty;

@end

// ###############################

@implementation ViewController

@synthesize testProperty;

- (void)viewDidLoad {
[super viewDidLoad];

testProperty = [X2 new]; --> Warning
[testProperty printLog];
}
}

警告是:分配给
的指针类型不兼容这个警告很明显,但我的问题是这段代码是如何工作的?它投了吗?

最佳答案

之所以可行,是因为 Objective-C 的动态特性。编译器正确地警告您类型不匹配,但在运行时,当它执行 printLog 消息发送到它的接收者时,它检查对象是否真的知道如何处理这个消息。由于您的 X1X2 类都实现了 printLog,因此这是可行的。同样,在 X1X2 的任何公共(public)父类(super class)中实现的任何消息(因此至少来自 NSObject 的所有内容)也可以工作。

这称为“Duck Typing”,是 ObjC 运行时的基础。

关于ios - 来自不兼容指针类型的类型分配在 objective-c 中应该总是失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53894345/

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