Вот часть определения класса в программе IOS, используя подсчет ссылок (ARC):Странное поведение с переменной экземпляра NSString
@interface CapViewController : UIViewController
{
NSString *bottomBn;
NSString *topBn;
}
@property (nonatomic, strong) NSString *bottomBn;
@property (nonatomic, strong) NSString *topBn;
@end
В реализации я синтезировать их:
@implementation CapViewController
@synthesize bottomBn;
@synthesize topBn;
Проблема когда я пытаюсь присвоить значения. Если я пошагово следующие строки в метод класса (первый раз каждая переменная экземпляра используется):
bottomBn = [NSString stringWithString:@"bottomBn"];
topBn = [NSString stringWithString:@"topBn"];
После того, как первая линия выполнена, значение topBn становится @ «bottomBn» и bottomBn равна нулю Вторая линия не влияет.
Если изменить порядок, в котором переменные экземпляра, определенные в классе, т.е .:
NSString *topBn;
NSString *bottomBn;
тогда первая уступка не имеет никакого эффекта, а второй результат присваивания в «topBn» быть назначен bottomBn.
Использование локальных переменных это работает, как ожидалось:
NSString *localbottomBn = [NSString stringWithString:@"defaultbottombutton"];
NSString *localtopBn = [NSString stringWithString:@"defaulttopbutton"];
Это кажется странное поведение для меня. Буду признателен за любую помощь.
Можете ли вы разместить больше кода, окружающего строки, где вы их установили? Если бы вы могли опубликовать полный, минимальный тестовый пример, который можно было бы использовать для воспроизведения проблемы, это тоже помогло бы. –
Текущая версия lldb имеет серьезную ошибку с отображением значений ivars. См. Http://stackoverflow.com/questions/9533189/objective-c-object-nil-after-init и http://stackoverflow.com/questions/9408219/debugger-lldb-says-my-object-is-nil -when-is-not –