Jdi*_*zle 3 objective-c nsmutablearray uipageviewcontroller
我正在尝试使用从故事板构建的场景来构建应用程序的演练.
所以我填充了我的viewControllers数组,称为pages:
@interface PVCPagesViewController () {
NSMutableArray *pages;
}
@property (retain, nonatomic) NSMutableArray *pages;
@property (strong, nonatomic) UIPageViewController *pageController;
@end
Run Code Online (Sandbox Code Playgroud)
在viewDidLoad()中:
self.pages = [[NSMutableArray alloc] init];
UIViewController *page1 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"page1"];
UIViewController *page2 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"page2"];
UIViewController *page3 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"page3"];
UIViewController *page4 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"page4"];
self.pages = [[NSMutableArray alloc] initWithObjects:page1, page2, page3, page4, nil];
Run Code Online (Sandbox Code Playgroud)
但是当我要在viewControllerAfterViewController()中从数组加载另一个视图控制器时:
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSInteger index = [self.pages indexOfObject:viewController];
index++;
return [self.pages objectAtIndex:index];
}
Run Code Online (Sandbox Code Playgroud)
我得到一个有效的viewController,我在数组中看到它,但是当我尝试objectAtIndex时,它返回nil?
(lldb) po self.pages
<__NSArrayM 0x170243cc0>(
<UIViewController: 0x13cd05370>,
<UIViewController: 0x13cd06030>,
<UIViewController: 0x13ce00000>,
<UIViewController: 0x13ce11b60>
)
(lldb) po viewController
<UIViewController: 0x13cd05370>
(lldb) po [self.pages indexOfObject:viewController];
<nil>
(lldb)
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?提前致谢
indexOfObject:不返回一个对象,这是pocommand(print --object-description)所期望的; 它返回一个NSUInteger.使用plain print命令:
(lldb) p (NSUInteger)[self.pages indexOfObject:viewController];
0
Run Code Online (Sandbox Code Playgroud)
使用时po,索引0被解释为对象指针.0指针是nil,所以这是打印的.如果它是任何其他值,调试器将不知道如何处理它,因为它几乎肯定不会是一个有效的对象指针.
| 归档时间: |
|
| 查看次数: |
1048 次 |
| 最近记录: |