Select 上的自定义 UITableViewCell 放弃内存问题
Custom UITableViewCell abandoned memory issue on Select
我在 iOS 使用带有自定义 UITableViewCell 的自定义 UITableView 时遇到问题。当我 运行 Xcode Instruments 上的应用程序时,每次我 select 来自自定义 TableView 的单元格时,我都可以看到有一个废弃的内存问题。
请参阅下面 "Instruments".
的屏幕截图
http://i.stack.imgur.com/cKz22.png
下面是用于创建单元格的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath2:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = [NSString stringWithFormat :@"cellID%i",indexPath.row];
customViewCell *cell = (customViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
NSInteger cellIndex = [indexPath row];
NSString* cellName = @"cell Name";
NSString* keyFile = @"0_48_video_1F0423D5-D2D7-466E-8D45-38C46E9B4425.mp4_1423522824.133377";
cell = [[customViewCell alloc] initWithStyle:UITableViewCellSelectionStyleNone reuseIdentifier:cellIdentifier withKeyFile:keyFile andRicochetName:ricochetName fromTableViewController:self;
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}
如果能提供帮助识别内存问题的专业知识,我将不胜感激。请注意,该应用程序是基于 ARC 构建的。
非常感谢
如果您只需要传递密钥文件名,您可以使用这种方式。确保您在界面构建器中链接了 keyFile
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath2:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"cellID";
customViewCell *cell = (customViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
NSInteger cellIndex = [indexPath row];
NSString* cellName = @"cell Name";
NSString* keyFile = @"0_48_video_1F0423D5-D2D7-466E-8D45-38C46E9B4425.mp4_1423522824.133377";
cell.keyFile=keyFile;
return cell;
}
将小区标识符更改为静态字符串。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath2:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"your tableview Cell Identifier";
customViewCell *cell = (customViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
NSString* cellName = @"cell Name";
NSString* keyFile = @"0_48_video_1F0423D5-D2D7-466E-8D45-38C46E9B4425.mp4_1423522824.133377";
cell = [[customViewCell alloc] initWithStyle:UITableViewCellSelectionStyleNone reuseIdentifier:cellIdentifier withKeyFile:keyFile andRicochetName:ricochetName fromTableViewController:self;
}
return cell;
}
我在 iOS 使用带有自定义 UITableViewCell 的自定义 UITableView 时遇到问题。当我 运行 Xcode Instruments 上的应用程序时,每次我 select 来自自定义 TableView 的单元格时,我都可以看到有一个废弃的内存问题。 请参阅下面 "Instruments".
的屏幕截图http://i.stack.imgur.com/cKz22.png
下面是用于创建单元格的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath2:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = [NSString stringWithFormat :@"cellID%i",indexPath.row];
customViewCell *cell = (customViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
NSInteger cellIndex = [indexPath row];
NSString* cellName = @"cell Name";
NSString* keyFile = @"0_48_video_1F0423D5-D2D7-466E-8D45-38C46E9B4425.mp4_1423522824.133377";
cell = [[customViewCell alloc] initWithStyle:UITableViewCellSelectionStyleNone reuseIdentifier:cellIdentifier withKeyFile:keyFile andRicochetName:ricochetName fromTableViewController:self;
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}
如果能提供帮助识别内存问题的专业知识,我将不胜感激。请注意,该应用程序是基于 ARC 构建的。
非常感谢
如果您只需要传递密钥文件名,您可以使用这种方式。确保您在界面构建器中链接了 keyFile
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath2:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"cellID";
customViewCell *cell = (customViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
NSInteger cellIndex = [indexPath row];
NSString* cellName = @"cell Name";
NSString* keyFile = @"0_48_video_1F0423D5-D2D7-466E-8D45-38C46E9B4425.mp4_1423522824.133377";
cell.keyFile=keyFile;
return cell;
}
将小区标识符更改为静态字符串。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath2:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"your tableview Cell Identifier";
customViewCell *cell = (customViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
NSString* cellName = @"cell Name";
NSString* keyFile = @"0_48_video_1F0423D5-D2D7-466E-8D45-38C46E9B4425.mp4_1423522824.133377";
cell = [[customViewCell alloc] initWithStyle:UITableViewCellSelectionStyleNone reuseIdentifier:cellIdentifier withKeyFile:keyFile andRicochetName:ricochetName fromTableViewController:self;
}
return cell;
}