【问题标题】:Xcode : Accessing method instance from other class fileXcode:从其他类文件访问方法实例
【发布时间】:2012-03-15 02:53:31
【问题描述】:

我已经通过以下方式合理地成功设置了对另一种方法的访问:

SomeScript.m(我尝试访问的类)

-(void)amethod{....
{} 中的

codeA.h(访问方法的类)具有:

SomeScript* myScript;

codeA.m

myScript = [[SomeScript alloc] init];
[myScript amethod];

然而,我想做的是让它成为应用程序委托的实例变量,但是当我把 SomeScript* myScript;和 myScript = [[SomeScript alloc] init];在 AppDelegate.h 中,codeA.m 无法识别它。

【问题讨论】:

  • 您到底想做什么?您想在您的应用委托中创建 SomeScript 的实例变量吗?
  • 您要在AppDelegate 中创建SomeScript 的实例并在codeA 中访问它吗?另外,您是否可以访问codeA 中的AppDelegate
  • 是的,我想创建一个脚本实例,以便可以从程序中的任何其他类访问方法“amethod”。我不确定您从 codeA 访问“AppDelegate”是什么意思(对不起,我对此很陌生,但学习速度很快)是否可以从仅将 .h 文件导入到 codeA 中进行访问?

标签: objective-c xcode methods


【解决方案1】:

首先,给AppDelegate添加一个属性myScript

在 AppDelegate.h 中

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) SomeScript *myScript; // Add this line

//...

@end

在 AppDelegate.m 中

@implementation PCAppDelegate

@synthesize myScript; // Add this line

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.myScript = [[SomeScript alloc] init]; // Add this line

//...

@end

现在您已经声明并初始化了该属性,您可以像下面这样从其他类中使用它:

AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
[appDelegate.myScript aMethod];

【讨论】:

  • 感谢您的回复 - 这两种方法我都试过了。第一个选项给出错误'在“codeA *”类型的对象上找不到属性appDelegate',第二个方法给出'在AppDelegate *类型的对象上找不到属性myscript'这是否会泄露我没有做对的任何事情?
  • @lukedom89 - 查看我编辑的答案。我解释了如何将属性添加到应用程序委托。
  • @sch 我知道这个问题是不久前提出的,但我和 dominic 处于相同的位置,我从 [appDelegare.myScript aMethod] 得到错误,上面写着 'Property myscript not在 AppDelegate 类型的对象上找到“。对于我来说,我用我自己的代码完成了你放置的每一步,但它仍然说有一个错误。和想法?我能看到的唯一区别是我把代码放在 @987654326 @ 而不是 -(bool)application... .
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 1970-01-01
相关资源
最近更新 更多