Я создаю приложение iphone, и у меня есть табличный вид с некоторыми текстовыми полями внутри ячеек, содержимое полей установлено в viewWillAppear (его сгруппированные поля TableView w/3, которые всегда одинаковы). Содержимое текстовых полей извлекается из методов getter, возвращающих значения из разных переменных класса.Возможная проблема кэширования просмотра?
Проблема, с которой я столкнулась, заключается в том, что геттер, кажется, возвращает исходное значение, а не значение, которое модифицируется методом setter. Переменная класса - это NSMutableString. Возможно ли, что представление кэширует вызов метода?
//header file
@implementation ManageWorkoutViewController : UIViewController {
NSMutableString *workoutDifficulty;
}
-(void)setWorkoutDifficulty:(NSString *)value;
-(NSString *)getWorkoutDifficulty;
@end
//implementation file
-(NSString *)getWorkoutDifficulty {
if (nil == workoutDifficulty) {
workoutDifficulty = [NSMutableString stringWithString:@"Easy"];
}
NSLog(@"getter: Returning workoutDifficulty as: %@", workoutDifficulty);
return workoutDifficulty;
} //end getWorkoutDifficulty
-(void)setWorkoutDifficulty:(NSString *)value {
workoutDifficulty = [NSString stringWithFormat:@"%d", value];
NSLog(@"setter: workoutDifficulty set as: %@", workoutDifficulty);
}//end setWorkoutDifficulty
//elsewhere in the implementation another table view is
//pushed onto the nav controller to allow the user to pick
//the difficulty. The initial value comes from the getter
workoutDifficultyController.title = @"Workout Difficulty";
[workoutDifficultyController setOriginalDifficulty:[self getWorkoutDifficulty]];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[(UINavigationController *)self.parentViewController pushViewController:workoutDifficultyController
animated:YES];
//then in that workoutDifficultyController it calls back into the first controller to set the selected value:
[manageWorkoutController setWorkoutDifficulty:selectedDifficulty];
Я думаю, вы имеете в виду, что речь идет об переменной экземпляра, а не переменной класса. Трудно следовать тому, что вы говорите. Это действительно помогает, если вы действительно публикуете соответствующий код. –
Никогда не префикс ваших получателей с помощью «get». Ведущий «get» означает что-то другое в Cocoa, и таким образом это разрушит KVC, на который полагаются многие части Cocoa. http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/KeyValueCoding/KeyValueCoding.html –