iPhone, ошибка: объект не может быть установлен - либо свойство только для чтения, либо не найден установщик - PullRequest
0 голосов
/ 30 ноября 2010

Я знаю, что есть другой вопрос, такой как этот, о переполнении стека, но моя проблема связана с моим собственным классом, а не с UIButton.Мой метод намного сложнее.Первая закомментированная строка работает.

@implementation GettingStartedViewController
- (void)actionSheet:(UIActionSheet *)actionSheet 
  clickedButtonAtIndex:(NSInteger)buttonIndex {

//[cui showHelpClickButtonAtIndex:buttonIndex:self.view:
  //theController:FALSE:HelpPageGettingStarted];

  // Error from this next line error: object cannot be set - either 
  //readonly property or no setter found 
  self.theController = [cui showHelpClickButtonAtIndex:buttonIndex:
      self.view:theController:FALSE:HelpPageGettingStarted];    
}
- (void)viewDidLoad {
   [super viewDidLoad]; 
cui = [CommonUI alloc]; // Used for several functions
}

И вот функция, которую он вызывает.Я пытаюсь повторно использовать код и хранить вещи в одной функции.функция использует addSubView и presentModalViewController.

@implementation CommonUI
-(UIViewController *)showHelpClickButtonAtIndex:(int)buttonIndex:
  (UIView *)vw:(UIViewController *)vc:(BOOL)useNav:(HelpPage)page{

  if (buttonIndex == CommonUIInfoHelpPagesBtnIdx) {
    if (useNav == TRUE) {
        // snip
    } else {
        vc = [[HelpViewController alloc] initWithNibName:@"HelpView" 
             bundle:nil onPage:page];   
        [vw addSubview:vc.view];
        return [vc autorelease]; 
    }
  } else {
    // Snip
  }
// Snip
}

Ответы [ 2 ]

3 голосов
/ 30 ноября 2010

В сообщении говорится, что в GettingStartedViewController отсутствует свойство для theController.Ваш вызов метода работает просто отлично.

self.theController = someObject аналогично вызову метода установки: [self setTheController:someObject]

Свойства автоматически генерируют эти методы получения и установки;поэтому, если вы не определили свойство, оно не будет создавать сеттер, и это ваша проблема здесь.

Добавьте в свой заголовочный файл следующее:

@property (nonatomic, retain) UIViewController* theController;

И синтезируйте его в файле реализации:

@synthesize theController;

Не забудьте выпустить его в -dealloc Метод, как вы сказали установщику, чтобы сохранить объект:

-(void) dealloc {
    [theController release];
    theController = nil;
}
0 голосов
/ 30 ноября 2010

iPhone, ошибка: объект не может быть установлен - либо свойство readonly, либо не найден установщик, возникает ошибка, когда вы не синтезировали его и все еще обращаетесь к его установщику или / и методу получения.

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