如何在 objective c 中的 class 方法之间共享实例变量
how to share instance variable between class methods in objective c
所以我正在构建一个 flutter 原生插件。我有两种方法(在 xyzPlugin.m
中)看起来像这样
+ (void)registerWithRegistrar:(nonnull NSObject<FlutterPluginRegistrar> *)registrar {
和
- (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result {
现在,我想在它们之间共享实例变量。
假设。我在 registerWithRegistrar
中像这样初始化 meetingView
MeetingView *meetingView = [MeetingView new];
如何在 handleMethodCall
中使用相同的内容?
我尝试了什么?
@implementation xyzPlugin {
MeetingView *_view;
}
然后在
- (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result {
_view = [MeetingView new];
但这会产生以下错误
Instance variable '_view' accessed in class method
也许您需要一个全局变量,这样您就可以使用 static
关键字声明您的对象,例如:
static MeetingView *_meetingView = ...
然后您可以在 Objective-C.
中的 class 方法之间访问此对象
+ (instancetype)shared{
static id obj;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
obj = [self new];
});
return obj;
}
// [MeetingView shared]...
所以我正在构建一个 flutter 原生插件。我有两种方法(在 xyzPlugin.m
中)看起来像这样
+ (void)registerWithRegistrar:(nonnull NSObject<FlutterPluginRegistrar> *)registrar {
和
- (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result {
现在,我想在它们之间共享实例变量。
假设。我在 registerWithRegistrar
meetingView
MeetingView *meetingView = [MeetingView new];
如何在 handleMethodCall
中使用相同的内容?
我尝试了什么?
@implementation xyzPlugin {
MeetingView *_view;
}
然后在
- (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result {
_view = [MeetingView new];
但这会产生以下错误
Instance variable '_view' accessed in class method
也许您需要一个全局变量,这样您就可以使用 static
关键字声明您的对象,例如:
static MeetingView *_meetingView = ...
然后您可以在 Objective-C.
中的 class 方法之间访问此对象+ (instancetype)shared{
static id obj;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
obj = [self new];
});
return obj;
}
// [MeetingView shared]...