2 ooomiao oOOMIAO 于 2012.12.24 16:33 提问

@class @synthesize用法

问题描述:

为了coredata创建类:

LoginPass.h

然后first类

FirstClass.h

然后在secondclass中使用这些类,用@class声明:

SecondClass.h
...
@class FirstClass;
@class LoginPass;
...
    @interface SecondClass : UIViewController
  {
   ......
  }
@property (strong, nonatomic) FirstClass *fromFirstClass;
@property (strong, nonatomic) LoginPass *myEntity;
...
@end

在.m文件中

#import "SecondClass.h"
#import "FirstClass.h"
#import "LoginPass.h"
@implementation SecondClass
...
@synthesize fromFirstClass = _fromFirstClass;
@synthesize myEntity = _myEntity;
...

我不明白为什么要写这行代码:@synthesize myEntity = _myEntity;但是换成这行代码就不行了:@synthesize myEntity;

问题是:为什么可以用self.fromFirstClass,但是不能用self.myEntity

如果用 self.myEntity的话系统会报错。为什么?

1个回答

redCoral_
redCoral_   2012.12.24 17:24
已采纳
@synthesize fromFirstClass = _fromFirstClass;
@synthesize myEntity = _myEntity;

这两行代码都正确,不过现在@synthesize 已经包含在编译器里所以不用@了

在使用self.prop用来访问属性

在用_prop时是直接调用属性

在使用self.prop时, 调用方法取决于lhs 或者hs of =(assignment) :

-(NSString *)prop; //在使用myName=self.prop调用;

and/or

-(void)setProp; //在使用self.prop=@"master"调用;

同时 如果使用 self._myEntity ,系统会需找名字中带_的方法, 导致错误.

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
OC之@property @synthesize用法详解
在OC开发中 点语法用的是最为广泛的语法
objective-c中的@property,@synthesize等简易用法(八)
holydancer原创,如需转载,请在显要位置注明: 转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7355833 在objective-c中,我们可以用new简单的代替alloc init,我们今天介绍的是类似于new这种简易用法的另一种OC特性,用@property,@synthe
iOS中@synthesize的使用
@synthesize关键字和@property关键字一样,都是编译器特性,让Xcode可以自动生成getter和setter的声明和实现 (一)@property 关键字            @property 关键字可以自动生成某个成员变量的setter和getter方法的声明              语法              @property NSString *str;
OC学习篇之---@property和@synthesize的使用
在之前一片文章我们介绍了OC中的内存管理:http://blog.csdn.net/jiangwei0910410003/article/details/41924683,今天我们来介绍两个关键字的使用:@property和@synthesize一、@property关键字这个关键字是OC中能够快速的定义一个属性的方式,而且他可以设置一些值,就可以达到一定的效果,比如引用计数的问题下面来看一下他的
@synthesize 的作用
原文链接:Why use @synthesize statements译文iOS 6 之后 LLVM 编译器引入property autosynthesis,即属性自动合成。换句话说,就是编译器会为每个 @property 添加 @synthesize ,如以下形式:@synthesize propertyName = _propertyName;这行代码会创造一个带下划线前缀的实例变量名,同时使用
iOS笔记--oc语法8 (@synthesize和@dynamic的区别)
申明:此为本人学习笔记,若有纰漏错误之处的可留言共同探讨 先说明一下,@synthesize和@dynamic这两种方法应该都过时了,目前用法只单用@property就可以了,但是作为一名程序猿,要了解一下以前的知识,方便维护老代码,以及面试的时候会问到(其实面试问这个也是为了确保面试人员懂这个知识,方便维护老代码),这就是写这篇博客的初衷。 旧式的写法是,在@property声明属性
如何正确使用@synthesize(在有了自动合成属性实例变量之后,@synthesize还有哪些使用场景?)
写在前面这篇博客本来是回答《招聘一个靠谱的iOS》中在有了自动合成属性实例变量之后,@synthesize还有哪些使用场景? 的这一问题,但是写着写着在了解了property的相关内容后,突然冒出了许多对@synthesize使用方法的理解,并且记录了下来,希望分享给大家,与大家一同进步,如果理解的不正确,欢迎在评论区指正,有评论必回!
第二章、Objective-C中的@property、@synthesize和dynamic的用法(iOS学习笔记,从零开始)
*以下博文来自 http://justcoding.iteye.com/blog/1444548 非常敬佩作者的分享精神。 @代表“Objective-C”的标志,证明您正在使用Objective-C语言 Objective-C语言关键词,@property与@synthesize配对使用。 功能:让编译器自动编写一个与数据成员同名的方法声明来省去
@synthesize和@dynamic的区别和应用环境
@dynamic的意思是动态绑定一个属性的实现,直白的说,就是告诉编译器这个属性不用你去做任何操作,完全由程序员自己来完成实现,包括getter,setter方法。 @synthesize的意思是编译器自动生成相应代码,除非程序员自己已经实现了。 这两者的应用环境: 一般情况下,我们通常会用@synthesize来完成相关的属性操作,这样我们不写get和set方法完全没问题,因为编译时编
关于Cocos2d-x的CC_SYNTHESIZE 和 CC_SYNTHESIZE_READONLY 宏的作用
关于Cocos2d-x的CC_SYNTHESIZE 和 CC_SYNTHESIZE_READONLY 宏的作用