0

我使用扩展 UITableView 的“ EasyTableView ”。我遇到如下问题:

- (void)viewDidLoad
    {
        NSArray *array = [[NSArray alloc] initWithObjects:@"14.jpg",nil];
        photos = array;
        [array release];
        [photos objectAtIndex:0];  //this "photos" can be access
    }

但是当我尝试访问委托方法中的“照片”时:

- (void)easyTableView:(EasyTableView *)easyTableView setDataForView:(UIView *)view forIndexPath:(NSIndexPath *)indexPath {

    NSInteger r = [indexPath row]; // r = 0
    NSString *imagePath = [photos objectAtIndex:r];  //this line cause : reason: '-[CALayer objectAtIndex:]: unrecognized selector sent to instance 

    }

为什么访问照片的结果不同?我该如何解决?

4

2 回答 2

0

使用照片作为财产

@property (nonatomic, retain) NSMutableArray* photos;

并在实施中

@synthesize photos = photos;

现在可以在委托中访问它

于 2012-05-09T11:44:52.550 回答
0

photos变量没有保留您分配给它的数组。当它被释放时,内存被重新用于指向一个 CALayer 对象。如果照片是保留财产,您应该使用它self.photos = array;来进行分配。如果它只是一个简单的变量,那么直接分配它而不是使用array.

于 2012-05-09T11:45:24.587 回答