我正在尝试实现我自己的自定义 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/