关于CGPoint的内存管理

Kay*_*han 2 iphone memory-management cgpoint

请参考CGPointMake需要解释?

纠正我,如果我错了,在执行中CGPointMake,CGPoint p;声明一个局部变量a struct,应该在离开范围后释放.但为什么函数可以没有风险地返回值?

无论如何,假设执行CGPointMake是正确的,我应该释放由创建的CGPoint CGPointMake吗?

Dav*_*ong 7

它不需要被释放,因为它从未在堆上生存.只需要释放堆分配的内存.CGPointMake()在方法/功能存在后,将自动清除堆栈中分配的内存(如中所示).

该函数可以返回一个点,因为编译器看到"啊哈,这个函数想要返回一个sizeof(CGPoint)字节大的结构,所以我要确保返回值内存插槽中有足够的空间用于那么大的东西." 然后,当函数退出时,将返回值复制到返回内存插槽中,函数退出,并将返回槽中的值复制到其新目标.

  • 并且为了与Apple的命名约定保持一致,我们知道我们不需要释放它,因为它在函数名称中没有"Create"或"Copy"这个词(在Create Rule之后).Apple通常在返回的东西是结构的情况下使用Make,但更重要的是学习Create Rule和等效的Cocoa内存管理规则(new,alloc,copy). (2认同)