Objective-C的代码片段最初张贴在这里:内存管理相关
https://codereview.stackexchange.com/questions/17818/objective-c-retain-release-snippet
难道是好到那里后呢? 关于如何使用Objective-C管理内存有三个问题。
我设法让我的应用程序按照预期的方式工作,遵循Apple文档,但我想确保它真的是一条非常好的路!
如果这个问题是这样就OK了,请随时复制/粘贴到此处,我也会链接到从CoreReview这个问题...
编辑:
这是对文本从代码审查现场原题:
下面是一些片断我编码,我想在我处理这样一些反馈:
我有一个实用工具类,作为一个单身,这为我提供了一个名为方法randomColor返回一个(UICo lor *):
-(UIColor*)randomColor
{
float l_fRandomRedColor = [[MathUtility instance] randomFloatNumberBetweenNumber:0.0f AndNumber:1.0f];
float l_fRandomBlueColor = [[MathUtility instance] randomFloatNumberBetweenNumber:0.0f AndNumber:1.0f];
float l_fRandomGreenColor = [[MathUtility instance] randomFloatNumberBetweenNumber:0.0f AndNumber:1.0f];
return [UIColor colorWithRed:l_fRandomRedColor
green: l_fRandomGreenColor
blue: l_fRandomBlueColor
alpha: 255];
}
现在,我知道这个方法返回的对象是autoreleased。
我返回的值存储在另一个类,我想保持这个值了一段时间,所以我继续这样的:
[self setMpCurrentPieceColor:[[GraphicsUtility instance] randomColor]];
其中要求以下属性:
- (void)setMpCurrentPieceColor:(UIColor*)_newColor
{
[_mpCurrentPieceColor release];
[_newColor retain];
// Make the new assignment.
_mpCurrentPieceColor = _newColor;
}
问题A)
我的实例变量在dealloc方法中被释放。是一个正确的路要走吗?
问题B)
现在,让我们想象我有一个数组,像这样:
UIColor* mBoardColors[WIDTH][HEIGHT];
我想以前的实例变量存入数组:
[mBoardColors[l_iBoardXIndex][l_iBoardYIndex] release];
[_color retain];
mBoardColors[l_iBoardXIndex][l_iBoardYIndex] = _color;
是它正确吗?
问题C)
如果我想从一个细胞移动颜色到另一个(移动,不是抄袭),是正确的那样做?
[mBoardColors[l_iBoardXIndex][l_iBoardYIndex] release];
mBoardColors[l_iBoardXIndex][l_iBoardYIndex] = mBoardColors[l_iBoardXIndex][l_iBoardYIndex - 1];
mBoardColors[l_iBoardXIndex][l_iBoardYIndex - 1] = nil;
在此先感谢您的宝贵意见和建议!
非常感谢您的回答! –