这安全吗? (指向 Objective C 实例变量的指针)

发布于 2024-10-31 05:59:45 字数 119 浏览 3 评论 0原文

我有一些需要访问实例变量的 C 函数。我已经将一个结构体作为参数传递给该函数,因此我将指向 ivars 的指针添加到该结构体中。

依赖指针在应用程序的整个生命周期中保持有效是否安全(假设我明智地保留和释放?)

I have some C functions that need access Instance variables. I already pass a struct in as an argument to the function, so I added pointers to the ivars to the struct.

Is it safe to rely on the pointer remaining valid throughout the life of the app (assuming i retain and release sensibly?)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

扎心 2024-11-07 05:59:45

只要它指向的东西仍然有效,指针就保持有效。如果包含 ivars 的对象被释放,并且其他人仍在尝试使用指向其中一个 ivars 的指针,那么是的,它会崩溃。

也就是说,根据需要获取和设置实际值可能是更好的设计;当然,ivars 并没有那么大,以至于您需要直接指向它们。这样做会破坏所有封装的概念,并需要您做更多容易出错的工作来确保所有对象的生命周期一致。如果您需要更广泛的设计建议,请随时多说或提出其他问题。

The pointer remains valid as long as the thing it points to remains valid. If the object that contains the ivars gets dealloced, and someone else is still trying to use a pointer to one of the ivars, then yeah, it'll blow up.

That said, it might be a better design to just get and set the actual values as necessary; surely the ivars aren't so big that you need to point directly to them. Doing so breaks all notion of encapsulation and requires you to do a lot more error-prone work to make sure all your object lifetimes coincide. Feel free to say more or ask another question if you want more broad design advice.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文