ios - 如何为自定义 UIWindow 实现我自己的 getter 方法?

标签 ios objective-c uiwindow

我正在尝试实现我自己的自定义 UIWindow 类。它被命名为 SNWindow。我读到你必须实现自己的 getter 方法,这就是我所做的,但它永远不会超过“第 1 点”。它无限记录“点 1”,在 iPhone 上显示黑屏。

AppDelegate.h

#import <UIKit/UIKit.h>
#import "SNWindow.h"

@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) SNWindow *window;
- (SNWindow *)window;
@end

AppDelegate.m

...

- (SNWindow *)window
{
    NSLog(@"Point 1");

    //
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

    //
    UIViewController *viewController = [storyboard instantiateInitialViewController];

    //
    _window = [[SNWindow alloc] init];
    _window.rootViewController = viewController;

    NSLog(@"Point 2");

    return _window;
}

关于如何修复它有什么想法吗?

最佳答案

不要输入 window属性为 SNWindow;将其键入为 UIWindow,这是正常的方式。您的 App Delegate 类中的代码需要如下所示:

- (UIWindow*) window {
    UIWindow* w = self->_window;
    if (!w) {
        w = [[SNWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        self->_window = w;
    }
    return w;
}

App Delegate 的其余部分,例如 application:didFinishLaunching... , 应该继续做它通常会做的事情(可能只是返回 YES)。

关于ios - 如何为自定义 UIWindow 实现我自己的 getter 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24843471/

相关文章:

objective-c - 在 MoviePlayer 上按下完成后,iOS 6 方向会自动旋转回纵向

ios - UIWindow子类: Touches event not get fired

ios - Objective-C 中的键盘语言

ios - 在 iOS 中将线弯曲成圆圈

ios - 为什么我的模拟器仍然显示节点数和FPS? [SpriteKit]

ios - 如何检测启动 Storyboard 是否发生?

ios - AFNetworking 文件上传失败

objective-c - 规范化音频文件 obj-c

ios - 如何在 iOS 13/14 中将 View 添加到应用程序顶部

ios - UIWindow 的 UIView subview 不旋转