2012-02-24 3 views
2

Я разумно успешно доступ установки к другому методу следующим образом:Xcode: Доступ к экземпляру метода из другого файла класса

SomeScript.m (класс Я пытаюсь получить доступ)

-(void)amethod{.... 

codeA.h (класс, который получает доступ к amethod) в пределах {} имеет:

SomeScript* myScript; 

codeA.m

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

Однако я хочу сделать его переменной экземпляра делегата приложения, но когда я поместил код SomeScript * myScript; и myScript = [[SomeScript alloc] init]; в AppDelegate.h кодA.m не распознает его.

+0

Вы хотите создать экземпляр 'SomeScript' в' AppDelegate' и получить доступ к нему в 'codeA'? Кроме того, у вас есть доступ к 'AppDelegate' в' codeA'? – sch

+0

Что именно вы хотите сделать? Вы хотите создать переменную экземпляра SomeScript в своем делете приложения? –

+0

Да, я хочу создать экземпляр скрипта, чтобы я мог получить доступ к методу 'amethod' из любого другого класса в программе. Я не уверен, что вы имеете в виду, имея доступ к «AppDelegate» из codeA (извините, что я довольно новичок в этом, но быстро учился) может ли он получить доступ только от импорта файла .h в кодA? –

ответ

2

Во-первых, добавить свойство myScript к AppDelegate:

В 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]; 
+0

Спасибо за ваш ответ - я пробовал оба метода. Первый параметр дает свойство ошибки appDelegate, которое не найдено на объекте типа «codeA *», а второй метод дает «Свойство myscript, не найденное на объекте типа AppDelegate *». Это что-то дает, что я не прав? –

+0

@ lukedom89 - См. Мой отредактированный ответ. Я объяснил, как вы можете добавить свойство в делегат приложения. – sch

+0

Спасибо! Работает. –

Смежные вопросы