关于@property自动生成的实例变量的相关问题
来源:互联网 发布:json unicode转中文 编辑:程序博客网 时间:2024/05/21 06:45
1.大家都知道,自从Xcode 4.4后,如果自己不定义实例变量,@property是可以自动生成私有变量的,还有get set方法的声明和实现,即使是子类也看不到这个变量,但是子类是会继承的,那到底这个变量存放在哪里的?先上段代码:
//主函数
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc,constchar * argv[]) {
@autoreleasepool {
Person *p = [Person new];
[p test];
}
return0;
}
//类的声明文件
#import <Foundation/Foundation.h>
@interface Person :NSObject
@property int age;
@propertyNSString * name;
-(void) test;
@end
//类的实现文件
#import "Person.h"
int _age =22;
@implementation Person
-(void)test{
NSLog(@"_age = %d",_age);
}
@end
运行结果: _age = 0;可以推断,这个变量不是存放在全局变变量位置的,而且,如果是放在这个位置的话,那么会造成这样一个严重的后果,那就是你不能再任何文件再去定义全局的同名变量了,系统会提示重复定义的错误,这个变量子类是继承了的,那么这个变量就一定是在对象里面的,但是子类对象根本就看不到这个变量,更别说访问了,那这个变量到底是怎么定义的呢?
直接写正解吧
#import "Person.h"
@implementation Person
{
int _age;
}
-(void)test{
NSLog(@"_age = %d",_age);
}
@end
它是定义在实现文件中的,而且是有大括号括起来的,默认是生成 @private 的。
- 关于@property自动生成的实例变量的相关问题
- property生成属性的时候,同时重写setter与getter方法,那么实例变量不自动生成
- @property相关的问题
- 关于OC的property 和 实例变量思考
- @property和@synthesize可以自动生成某个类成员变量的存取方法
- 关于c语言中自动变量(局部自动变量)的空间的分配的问题
- 关于appfuse里自动生成的tablemanager的使用问题
- 实例变量(instance var)与属性(@property)的关系
- Property和实例变量(Ivar)的最佳实践
- OC 实例变量(instance var)与属性(@property)的关系
- 一个关于JSP页面生成相关表格的问题
- 关于textarea自动生成N多空格的问题
- 关于eclipse里的mybatis自动生成代码插件问题
- 关于textarea自动生成N多空格的问题
- 关于android studio不自动生成apk的问题
- 关于myesclipse下没有自动生成web.xml的问题
- 关于eclipse总是自动生成appcompat_v7的问题
- 关于tinker自动生成application失败的问题
- java 继承编程题
- QWidget的背景颜色和背景图片的设置
- UI028---UIScrollView控件实现图片轮播
- 线性表
- Android Bundle类
- 关于@property自动生成的实例变量的相关问题
- Qt之设置窗口背景
- python笔记 6
- 第2篇,到底什么是互联网思维?
- Qt之QTextEdit
- 结构体NSPoint、NSRect、与NSSize或CG开头的详解
- python中的split函数
- Run-Time Check Failure #2 - Stack around the variable 'myTrackbarName' was corrupted.
- 第3篇,我不懂技术,自己能运营微信公众号吗?