所以我有一个 NSMutableArray
加载了我的 viewDidLoad
方法的对象。只是为了检查,我将 NSLog(@"%d", [self.myMutableArray count]);
放在 viewDidLoad 方法的末尾并得到 6。
当我将相同的 NSLog
放在另一个方法(如 tableView:didSelectRowAtIndexPath
)上时,我得到相同的数字 6。
问题是当我从 IBAction
方法调用相同的 NSLog
时,我得到 0。为什么?
此外,我真正想做的是从另一个类访问此属性,但我发现它是空的:
HabitsTableViewController *habitsViewController = [[HabitsTableViewController alloc] initWithNibName:@"HabitsTableViewController" bundle:nil];
NSLog(@"%d",[habitsViewController.habits count]);
最佳答案
这是因为您正在创建 HabitsTableViewController
的新实例。您需要维护一个指向您想要影响的 Controller 的指针。
保留指向另一个类的指针的一种方法是将其声明为属性。如果需要将其保留在此类中,请使用“strong”,如果应由另一个类保留,请使用“weak”。
在你的.h中
@property (strong, nonatomic) HabitsTableViewController * pointerToHabitsTableViewController;
然后,在您的 .m 中,当您调用 HabitsTableViewController 时,将其分配给指针:
_pointerToHabitsTableViewController = ...;
然后,更改此:
HabitsTableViewController *habitsViewController = [[HabitsTableViewController alloc] initWithNibName:@"HabitsTableViewController" bundle:nil];
NSLog(@"%d",[habitsViewController.habits count]);
为此:
NSLog(@"%d",[_pointerToHabitsTableViewController.habits count]);
关于ios - 为什么我的属性(property)因调用地点而异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23437759/