gpt4 book ai didi

objective-c - 我怎么知道指针是否是 NSObject?

转载 作者:行者123 更新时间:2023-12-02 06:25:31 24 4
gpt4 key购买 nike

我在 Objective-C 类中有一个指针,我需要向其发送消息。指针可能是任何东西,所以我需要确保它会在我发送消息之前响应我的消息。这是我用来进行检查的函数:

int delegatePreparedForSelector(id delegate, SEL aSelector) {
if (delegate
&& [delegate isKindOfClass:[NSObject class]]
&& [delegate respondsToSelector:aSelector]) {
return YES;
}
return NO;
}

问题是有时委托(delegate)指针是 struct objc-object *我得到一个EXC_BAD_ACCESS当我发送 isKindOfClass 时出现错误访问错误消息。

我应该使用更好的测试来确定委托(delegate)人是否会回复我的消息吗?

最佳答案

等等,你真的是说指针可以是任何东西吗?就像指向一大块原始 malloc 内存的 void *,或者不是从 NSObject 派生的 objc_object?如果真是这样,那么就没有办法让这项工作安全进行。这相当于说“不取消引用这个指针我怎么知道取消引用是安全的?”唯一的方法是先验地知道传递给你的任何东西都不会给你一个坏指针。

您可以尝试编写一些信号处理程序代码来清除 EXEC_BAD_ACCESS,但最终它会运行缓慢、效果不佳,并且会掩盖许多其他真正的错误。实际上,您要么对传入的内容有一些限制,要么需要重新设计项目的这一部分。

关于objective-c - 我怎么知道指针是否是 NSObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1521814/

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