2012-05-09 113 views
0

我使用「EasyTableView」,這是一個延伸的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 

    } 

爲什麼結果訪問的照片有什麼不同?我該如何解決它?

+0

沒有足夠的信息。照片的定義在哪裏?你是如何定義它的? –

+0

如何定義照片?看起來你需要使用'self.photos = array'來正確保留對象。 – trojanfoe

回答

0

使用照片作爲財產

@property (nonatomic, retain) NSMutableArray* photos; 

,並在實施

@synthesize photos = photos; 

這將是代表訪問現在

0

photos變量不會保留你分配給它的陣列。當它被釋放時,內存正被重新用於指向一個CALayer對象。如果照片是保留屬性,則應使用self.photos = array;進行分配。如果它只是一個簡單的變量,那麼直接分配它而不是使用array