【问题标题】:purpose of @property in objective c@property 在目标 c 中的用途
【发布时间】:2010-12-02 10:17:36
【问题描述】:

看下面的代码;

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

@end

@property (nonatomic , retain ) int ageint age; 定义getter 和setter 和@synthesizing 它们在实现中给出了getter 和setter 的自动生成实现。

我不明白的是关于第二个。第二个属性 (@property (nonatomic , retain ) UIPopoverController *popoverController;) 生成什么方法? (:

我见过很多程序使用@property 处理除 int、string 等之外的对象;

任何人都可以指导我获得有关此的适当教程。

提前致谢。 (也有人可以告诉我如何在 stackoverflow 上接受答案)。

【问题讨论】:

    标签: objective-c properties


    【解决方案1】:

    很难提出比official documentation 更好的建议(至少您应该从阅读它开始)。

    @property (nonatomic , retain ) int age;
    

    确实应该为年龄 ivar 声明 setter/getter 方法,但该行会给出编译器错误,因为您不能为非对象类型声明具有保留属性的属性(有关详细信息,请参阅文档)

    @property (nonatomic , retain ) UIPopoverController *popoverController;
    

    这一行与第一行没有太大区别——它还为popoverController ivar声明了setter和getter方法,并且自动合成的setter将保留它得到的popoverController

    【讨论】:

      【解决方案2】:

      如果你有这个:

      @property (nonatomic , retain ) UIPopoverController *popoverController;
      

      @synthesize 生成的方法类似于:

      -(UIPopoverController*) popoverController
      {
          return popoverController;
      }
      
      -(void) setPopoverController: (UIPopoverController*) newValue
      {
          [newValue retain];
          [popoverController release];
          popoverController = newValue;
      }
      

      【讨论】:

        【解决方案3】:

        @synthesize 总是创建访问器。在你的情况下:

        - (void) setPopoverController:(UIPopoverController *)value;
        - (UIPopoverController *) popoverController;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-23
          • 2011-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多