【发布时间】:2012-06-21 12:43:04
【问题描述】:
在我的 AppDelegate 中,我导入了我创建的类的标头,并对其实例进行了属性化和合成(在 AppDelegate 中)。现在我试图从另外两个视图访问这个实例中的一个方法和一个变量。我对 Objective-c 比较陌生,但到目前为止我已经了解到,如果我这样做:
AppDelegate *appdelegate = [AppDelegate new];
我只会从 AppDelegate 中的类中获取一个新实例,因此如果我从一个视图设置变量,我将无法从另一个视图访问它。如果我这样做的话,我已经读过:
AppDelegate *ap = (AppDelegate *)[[UIApplication sharedApplication] delegate];
它将允许我访问现有实例。但它不起作用。
我尝试这样做的方式完全错误吗?非常感谢您的帮助!
更新:
当我在 AppDelegate 中执行此操作时:
myClass.string = @"test";
NSLog(@"appDelegate: %@", myClass.string);
我明白了:
appDelegate: (null)
更新2:
我写了@class AppDelegate;在 viewController 中的 @import 行下方,但我仍然无法访问 myClass。一个主要问题(这可能是视图无法正常工作的原因)是我什至无法从 AppDelegate 访问 myClass。
我在 AppDelegate.h 中写道:
@property (strong, nonatomic) testClass *myClass;
在 AppDelegate.m 中:
#import "testClass.h"
@synthesize myClass;
这应该是对的吧?
myClass.h
@property (strong, nonatomic) NSString *string;
myClass.m
@synthesize string;
当我尝试从 appDelegate 访问 myClass 时,我写道:
self.myClass.string = @"test";
NSLog(@"appDelegate: %@", self.myClass.string);
结果是:
appDelegate: (null)
【问题讨论】:
-
假设您在 iOS 上编程,您应该能够使用第二个示例中的代码获取 sharedApplication 委托。您设置的委托必须符合UIApplicationDelegate 协议。但是“它不起作用”是相当广泛的。什么不起作用?它返回零吗?或者是你的方法的调用不起作用。有什么错误吗?有什么警告吗?
-
谢谢。是的,我在 iOS 上编程。根本没有错误。实例中的方法似乎根本没有被调用。这意味着它必须符合 UIApplicationDelegate 是什么意思?我错过了一个被剪断的代码吗?
标签: iphone objective-c xcode class instance