0

カスタムにプロパティを設定しようとしていますUICollectionViewCell:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

    // Setup cell identifier
    static NSString *cellIdentifier = @"IgCell";

    PAInterestGraphCell *cell = (PAInterestGraphCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

    cell.interestCategory = [self.dataArray objectAtIndex:indexPath.row];

    // Return the cell
    return cell;

}

PAInterestGraphCellコード:

@interface PAInterestGraphCell : UICollectionViewCell

@property (atomic, retain) PAInterestCategory *interestCategory;

@end


#import "PAInterestGraphCell.h"
#import "PAScaleView.h"

@implementation PAInterestGraphCell

@synthesize interestCategory;

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        PAScaleView *scaleView = [[PAScaleView alloc] initWithFrame:frame];
        scaleView.backgroundColor = [UIColor clearColor];
        scaleView.interestCategory = self.interestCategory;

        [self.contentView addSubview:scaleView];
    }

    return self;
}

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    // Drawing code
}
*/

@end

しかし、そのinterestCategoryプロパティにアクセスすると、initWithFrameすべての値が失われました。

ここで明らかな何かが欠けていますか?

4

1 に答える 1

0

" @synthesize" アクセサーは、メソッドが終了するまで完全には作成されない可能性があるため、" init" メソッド中にアクセサーにアクセスするinit必要がある場合は、静的変数または ivar を使用する必要があります (その後、" @synthesize" を指す必要があります) " self." 以外のすべてで" " を使用しますinit)。

interestCategoryさらに、オブジェクトのインスタンス化と初期化の前に設定できなかった " " プロパティにアクセスしたいというのは、ちょっと無意味に思えます。それとも、カット アンド ペーストで省略したコード行ですか?

于 2012-12-08T19:38:16.750 に答える