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

Objective c 这安全吗?(指向目标C实例变量的指针),objective-c,c,pointers,instance-variables,Objective C,C,Pointers,Instance Variables,我有一些C函数需要访问实例变量。我已经将一个结构作为参数传递给函数,所以我将指向IVAR的指针添加到结构中 依靠指针在应用程序的整个生命周期内保持有效是否安全(假设我明智地保留和释放?只要指针指向的东西保持有效,指针就保持有效。如果包含IVAR的对象被解除分配,而其他人仍试图使用指向其中一个IVAR的指针,那么是的,它会爆炸 也就是说,根据需要获取并设置实际值可能是更好的设计;当然,IVAR不是那么大,你需要直接指向它们。这样做打破了封装的所有概念,并要求您做更多容易出错的工作,以确保所有对象的

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


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

只要指针指向的东西保持有效,指针就保持有效。如果包含IVAR的对象被解除分配,而其他人仍试图使用指向其中一个IVAR的指针,那么是的,它会爆炸


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

谢谢,我想我真的需要找出与Objective-C和C相关的好的OO设计。我想我在Obj-C中获得了它的基础知识,但混合了ing结构和C函数对我来说很模糊。我需要在渲染回调中工作。回调函数接收到一个结构,然后我用该结构的信息调用一个C函数。我需要在回调中调用的方法中使用ivar值。有趣的fun@griotspeak:那么,为什么不传递对实际Obj-C对象的引用,并在调用内部C函数时提取您关心的属性呢?(或者,如果值不需要更新,则提前取出所有值并将其添加到结构中,最终在回调中结束?在某些异步回调中直接指向某些对象的私有IVAR是非常脆弱的。我不能在回调中进行obj-C调用。这会花费太长时间,并且会出现音频故障。我的想法是向ivar添加指针而不是值是因为涉及到2个结构,我可以只更新ivar。我介于这和传递值之间。再次感谢