Dou*_*ith 0 cocoa-touch objective-c uiviewcontroller ios uipageviewcontroller
我有一个叫做ImageGalleryPageViewController子类的类UIPageViewController.在我的init方法中,我调用:
self = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
Run Code Online (Sandbox Code Playgroud)
但我得到这个警告:
从'UIPageViewController*'分配给'ImageGalleryPageViewController*'的指针类型不兼容
我应该只是投出结果[[alloc] init]吗?这看起来很奇怪,难道不应该认识到我是一个子类而不是抱怨吗?
你应该用
self = [super initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
Run Code Online (Sandbox Code Playgroud)
当有人调用alloc] init*您的子类时,他们正在创建一个实例,alloc然后该init*方法初始化该对象.你正在做的是创建一个全新的对象alloc] init*,这意味着先前分配的对象将立即被丢弃.
请记住,如果您将子类的实例分配给它的父类的指针,编译器会很高兴,因为编译器知道子类将具有相同的接口
@interface SubClass : SuperClass
SuperClass *instance = [[SubClass alloc] init]; // This is fine
Run Code Online (Sandbox Code Playgroud)
但它不能保证反过来,例如父类将实现子类将添加的其他行为
@interface SubClass : SuperClass
SubClass *instance = [[SuperClass alloc] init]; // warning
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
823 次 |
| 最近记录: |