XCode下在不同位置声明变量的用法(转)
XCode下在不同位置声明变量的用法
方式一:直接在.h文件@interface中的大括号中声明。
@interface Test : NSObject { NSString *str; // 私有变量 , 其他类无法访问,只能够该类内部单独使用 }
@end
方式二:在.h@interface中声明,然后再在@property中声明。(已废弃写法.Xcode后来出了自动合成属性器)
@interface Test : NSObject { NSString *_str; } @property (strong, nonatomic) NSString *str; @end
// 随后在.m文件中加入 @synthesize str = _Str;
方式三:直接用@property声明(分两种情况 -- 在.h文件声明的话,该变量为公有, 在.m文件中声明的话,该变量为私有
@interface Test : NSObject{
} @property (strong, nonatomic) NSString *mystr; @end
方式一 : 声明的成员变量是只能在自己类内部使用的,而不能在类的外部使用,(就是通过类名. 点的方式是显示不出来的)
方式二的写法是一种过时的声明变量的方式,xcode在早期@systhesize没有自动合成属性器之前,需要手写
getter与setter方法,下划线从风格上表明这是类的内部变量,要是需要直接使用变量则需要使用get或者set的方式。(反正你不会用.)
方式三 : 声明的成员变量它可以在类的外部访问,在类的内部可以通过下划线+变量名或者self.变量名的方式来访问。
在XCode目前有了自动合成属性器后,编译器会自动帮我们生成一个以下划线开头的的实例变量,所以我们不必去同时声明属性与变量。 我们可以直接用@property的方式来声明一个成员属性,在.m文件中使不使用@systhesize都无所谓,xcode会自动帮你生成getter与setter.
推荐使用第三种方式把.
平时在项目开发中用到的一些小技巧 :
声明的变量为Bool类型的话,最好重写getter方法例如:
@property (assign, nonatomic,getter=isCheck) BOOL *check;
如果属性只希望别人访问,不希望别人修改,那么可以加上readonly , 这个时候 self.readOnlyStr 就会报错,因为没有生成setter方法
@property (nonatomic, copy,readonly) NSString *readOnlyStr;
最新文章
- abstract与interface之房祖名张默版
- OD19
- 发现 git忽略没用
- SPS中JSOM和SOAP 实现文件上传
- Python自动化之pickle和面向对象初级篇
- java 深度探险 java 泛型
- Logstash——multiline 插件,匹配多行日志
- win7系统cmd命令切换到指定文件夹目录
- C#操作Excel数据增删改查(转)
- vim插件:latex-suite 使用方法
- VB.NET版机房收费系统—DataGridView应用
- jquery val() and text().
- Entity Framework 学习高级篇2—改善EF代码的方法(下)
- gameUnity 网络游戏框架
- IO流程中IO向量iovec
- jBPM学习之部署流程定义
- alpha-咸鱼冲刺day9-紫仪
- 客户端缓存机制 - Cookie详解
- 网页三剑客之HTML
- 译《The Part-Time Parliament》——终于读懂了Paxos协议!