У меня проблема в том, что я хочу использовать объект в таких приложениях, как SpringBoard, Safari, Settings, Notes и т. Д. Я использую шаблон Singleton. Но когда я сбрасываю эти объекты, у них есть собственное выделение. Поэтому я думаю, что они разные объекты. Есть ли способ сохранить объект во всех приложениях? У меня есть разрешение root.Как сохранить объект в приложении в объекте-c
Вот мой журнал на Homescreen (SpringBoard), Safari и настройки:
Oct 20 17:05:5 MyPhone SpringBoard[982] <Warning>: MyClass: <MyClass: 0x17f72680>
Oct 20 17:06:29 MyPhone MobileSafari[1001] <Warning>: MyClass: <MyClass: 0x15da9b60>
Oct 20 17:06:34 MyPhone Preferences[1002] <Warning>: MyClass: <MyClass: 0x175864c0>
MyClass.h
#import <Foundation/Foundation.h>
@interface MyClass : NSObject
+ (instancetype)sharedInstance;
- (void)doSomething;
@end
MyClass.m
#import "MyClass.h"
@implementation MyClass
- (instancetype)init {
self = [super init];
return self;
}
+ (instancetype)sharedInstance {
static dispatch_once_t p = 0;
__strong static id _sharedSelf = nil;
dispatch_once(&p, ^{
_sharedSelf = [[self alloc] init];
});
return _sharedSelf;
}
- (void)doSomething {
NSLog(@"MyClass: %@", self);
}
@end
Tweak.xm
#import <SpringBoard/SpringBoard.h>
#import <MyClass.h>
%hook SpringBoard
- (void)applicationDidFinishLaunching:(UIApplication *)application {
%orig;
MyClass *myClass = [MyClass sharedInstance];
[myClass doSomething];
}
%end
%hook UIViewController
- (void)viewDidLoad {
%orig;
MyClass *myClass = [MyClass sharedInstance];
[myClass doSomething];
}
%end
Спасибо @Ryan Pendleton. Я попробую ваше предложение. Моя проблема в том, что: мне нужно создать новый элемент управления (в данном случае это прямоугольник). Мой контроль всегда отображает верхний SpringBoard и каждое приложение. Он выглядит как AssistiveTouch на iPhone/iPod/iPad. Чтобы решить мою проблему, я создал пользовательский интерфейс UIWindow и добавил в него UIView. Но я хочу, чтобы мой элемент управления вращался, когда ориентация устройства изменилась на SpringBoard и в каждом приложении. Но с каждым приложением будет создан новый экземпляр моего пользовательского UIWindow, даже если я уже использую singleton pattern. Вот мой пользовательский интерфейс UIWindow http://pastie.org/9664645 –
@MinhQuy Есть ли причина, по которой вы вводите ваши настройки в приложения? Похоже, что впрыскивать его в SpringBoard было бы достаточно, если бы не было чего-то, чего я не видел. –
Существует множество способов обработки изменений ориентации устройства, но они имеют одинаковую проблему. В каждом процессе приложения (SpringBoard, Safari, Notes и т. Д.) Он создаст свой собственный объект моего пользовательского интерфейса UIWindow. Я могу повернуть новый объект, но старый объект, созданный в SpringBoard, все еще отображается, и я не могу его удалить или скрыть. Я пытаюсь обнаружить, когда SpringBoard выходит на передний план и фон. –