использование одноэлементных, общедоступных или глобальных переменных - PullRequest
0 голосов
/ 02 апреля 2012

Я искал и пробовал каждый пример, касающийся одноэлементных, общедоступных и глобальных переменных в переполнении стека на эту тему.Я ошибаюсь где-то.У меня есть переменная настроек с именем strIP, которая является частью textField и объявлена ​​в моем secondViewController.h.Я хочу, чтобы эта переменная использовалась в классе myWSupdate.m.Это всего лишь одна переменная, которую я хочу передать в строку подключения.это компилируется правильно, но приложение вылетает при запуске.Что я делаю неправильно?

ошибка компилятора: Завершение приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '+ [SecondViewController sharedIP]: нераспознанный селектор отправлен в класс 0x6403c'

secondViewController.h

@interface SecondViewController : UIViewController
{
UITextField *ipAdd;

NSString *strIP;

}
@property (nonatomic, retain) IBOutlet UITextField *ipAdd;
@property (retain) NSString  *strIP;

+(SecondViewController*)sharedIP;

тогда я вызываю это в myWSupdate.m:

#import "SecondViewController.h"

/* Implementation of the service */

@implementation myWSupdate

- (id) init
{
    if(self = [super init])
    {

        SecondViewController* IP = [[SecondViewController sharedIP]init];
NSLog(@"the test has %@", IP.strIP);
    }
}


@end

1 Ответ

2 голосов
/ 03 апреля 2012

Поскольку strIP принадлежит SecondViewController, вам необходимо ссылаться на него как на часть этого объекта.

Как это сделать, зависит от отношений между SecondViewController и myWSupdate.(Например, если контроллер создает объект myWSupdate, вы можете передать переменную как часть init.)

Тот факт, что он помечен как public, не меняет того факта, что это переменная экземпляра и, следовательно, должна использоваться в связи с экземпляром экземпляра ее класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...