UIImage * image = [[UIImage alloc] initWithData:data]; ((YKSubCategory *)[_ subCategories objectAtIndex:connection.tag - 1])。menuImage = image; [image release];
这是我写的代码。数据存在并创建设计的图像。 (我用imageview测试了它,图像出现了)。 当我尝试设置menuImage属性时出现问题。它不会被设置。我不知道为什么。所以menuImage属性的值仍为零。 这是属性定义:
@property (nonatomic, retain) UIImage *menuImage;
可能是什么问题?
编辑:
我已经将walkytalky请求的代码分开了。 这是我写的代码:
UIImage *image = [[UIImage alloc] initWithData:data];
YKSubCategory *subCategory = (YKSubCategory *)[_subCategories objectAtIndex:connection.tag - 1];
subCategory.menuImage = image;
[image release];
[_tableView reloadData];
所以现在有趣的是subCategory变量是我期望的变量。然后在我设置menuImage属性之后,设置此属性的变量。我可以在调试器中看到,但是在数组中没有设置。这是什么?
答案 0 :(得分:1)
(i)您有@synthesize
- d menuImage
吗?
(ii)你可以分解setter行来获得YKSubCategory
对象并测试它是否存在并且是你期望的?
YKSubCategory* target = (YKSubCategory*)[_subCategories objectAtIndex:connection.tag - 1];
NSLog("subcategory target = %@", target);
// other tests here
target.menuImage = image;
否则,我认为我们没有足够的信息来解决这个问题。设置后menuImage
会立即显示什么?
编辑:当你说“数组未设置”时,你的意思是数组中的实际对象与你刚刚设置的实际对象有何不同?或者,当您在加载表格数据时返回数组时,menuImage
不再设置?或者它只是没有在表中显示?
第一个似乎是不可能的,所以让我们考虑第二个和第三个。
如果在您返回menuImage
时已重置- (void) setMenuImage:(UIImage*)newImage
{
if ( newImage != menuImage )
{
NSLog(@"Changing menuImage from %@ to %@", menuImage, newImage);
[newImage retain];
[menuImage release];
menuImage = newImage;
}
}
,则必须在某处设置一些代码。这可能不会通过属性访问器,但对于初学者,您可能会显式实现setter来记录更改:
YKSubCategory
另一种可能性是数组中的实际{{1}}对象已更改,或者甚至数组不同,因此请检查两个位置中的指针是否相同。
另一方面,如果设置菜单图像ivar ,但它没有显示在表格中,则需要检查绘图代码。