Независимо от того, что я делаю, эта переменная отказывается менять значение - PullRequest
0 голосов
/ 15 ноября 2011

Это ДОЛЖНО быть простым. Вместо этого это смущает меня в течение последнего часа или около того.


Заголовочный файл:

CellBackgroundView - это пользовательский класс, производный от UIView.

@interface CustomCell : UITableViewCell {

    CellBackgroundView *customBackgroundView;

}

@property (strong) CellBackgroundView *customBackgroundView;


Код, который не работает должным образом:

Все, что я хочу сделать, это назначить что-то для customBackgroundView.

    customBackgroundView = [[CellBackgroundView alloc] initWithFrame:CGRectZero];
    [self addSubview:customBackgroundView];

-

Ничего не происходит. В отладчике я вижу, что customBackgroundView имеет значение 0x0. Следующее также не работает, хотя «background» действительно назначается место в памяти. customBackgroundView по-прежнему 0x0.

    CellBackgroundView *background = [[CellBackgroundView alloc] initWithFrame:CGRectZero];
    customBackgroundView = background.
    [self addSubview:customBackgroundView];


Что происходит? Почему это не работает? У меня включен ARC.


редактирует:

Основой CellBackgroundView является:

- (BOOL) isOpaque {
    return NO;
}

-(void)drawRect:(CGRect)aRect {
    //Custom drawing code
}

Кроме того, вышеприведенный код работал нормально, когда я использовал официальное свойство backgroundView UITableViewCell.

Ответы [ 3 ]

1 голос
/ 15 ноября 2011

Наконец-то .... ответ действительно заключается в том, что Xcode не работает.

Вернее, отладчик.Что бы я ни установил для этой переменной, Xcode отказывается отображаться в отладчике.Тем не менее, код на самом деле работает как надо.

Исправьте это, пожалуйста, Apple.

1 голос
/ 15 ноября 2011

Попробуйте

@property (nonatomic,retain) CellBackgroundView *customBackgroundView;

вместо strong и посмотрите, поможет ли это ... Это похоже на проблему с назначением памяти

0 голосов
/ 15 ноября 2011

Я изменил тип на UIView. Я забрал имущество и обобщил декларацию. Я «очистил» проект.

Так что мой код теперь просто:

@interface CustomCell : UITableViewCell {

    UIView *customBackgroundView;

}

// m-file

customBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 10, 10)];


Результат: это не работает. customBackgroundView по-прежнему ноль. Я пришел к выводу, что либо я сумасшедший, либо X-код неисправен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...