цель @property в цель c - PullRequest
       2

цель @property в цель c

0 голосов
/ 02 декабря 2010

Посмотрите код ниже;

@interface testViewController : UIViewController
{
     int age;
     UIPopoverController *popoverController;
}
@property (nonatomic , retain ) int age;
@property (nonatomic , retain ) UIPopoverController *popoverController;

@end

@property (nonatomic , retain ) int age определяет геттеры и сеттеры для int age;, а @synthesizing их в реализации дает автоматически сгенерированную реализацию геттера и сеттера.

Что я не понимаю, так это о втором.какие методы генерирует второе свойство (@property (nonatomic , retain ) UIPopoverController *popoverController;)?(:

Я видел много программ, которые используют @property с объектами, кроме int, string и т. Д .;

может помочь мне найти подходящее руководство по этому вопросу.

Заранее спасибо. (Также может кто-нибудь сказать мне, как принимать ответы на stackoverflow).

Ответы [ 3 ]

4 голосов
/ 02 декабря 2010

Трудно что-то посоветовать лучше, чем официальная документация (по крайней мере, вам следует начать с чтения).

@property (nonatomic , retain ) int age;

На самом деле предполагается объявить методы setter / getter для age ivar, но эта строка выдаст ошибку компилятора, так как вы не можете объявить свойство с атрибутом retain для необъектных типов (подробнее см. В документации)

@property (nonatomic , retain ) UIPopoverController *popoverController;

Эта строка не сильно отличается от 1-й - она ​​также объявляет методы setter и getter для popoverController ivar, а автоматически синтезированный setter сохраняет popoverController, который она получает

1 голос
/ 02 декабря 2010

Если у вас есть это:

@property (nonatomic , retain ) UIPopoverController *popoverController;

методы, сгенерированные @synthesize, будут выглядеть примерно так:

-(UIPopoverController*) popoverController
{
    return popoverController;
}

-(void) setPopoverController: (UIPopoverController*) newValue
{
    [newValue retain];
    [popoverController release];
    popoverController = newValue;
}
0 голосов
/ 02 декабря 2010

@synthesize всегда создает методы доступа.В вашем случае:

- (void) setPopoverController:(UIPopoverController *)value;
- (UIPopoverController *) popoverController;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...