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;

最新文章

  1. abstract与interface之房祖名张默版
  2. OD19
  3. 发现 git忽略没用
  4. SPS中JSOM和SOAP 实现文件上传
  5. Python自动化之pickle和面向对象初级篇
  6. java 深度探险 java 泛型
  7. Logstash——multiline 插件,匹配多行日志
  8. win7系统cmd命令切换到指定文件夹目录
  9. C#操作Excel数据增删改查(转)
  10. vim插件:latex-suite 使用方法
  11. VB.NET版机房收费系统—DataGridView应用
  12. jquery val() and text().
  13. Entity Framework 学习高级篇2—改善EF代码的方法(下)
  14. gameUnity 网络游戏框架
  15. IO流程中IO向量iovec
  16. jBPM学习之部署流程定义
  17. alpha-咸鱼冲刺day9-紫仪
  18. 客户端缓存机制 - Cookie详解
  19. 网页三剑客之HTML
  20. 译《The Part-Time Parliament》——终于读懂了Paxos协议!

热门文章

  1. LoadRunner11下载、安装与破解
  2. 使用PHP实现命令模式(转)
  3. 02. oc语言是动态语言
  4. Sybase数据库网页数据维护工具
  5. js中遍历对象(5种)和遍历数组(6种)的方法总结(转载)
  6. Mac下用apache搭建一个局域网服务器
  7. 【C/C++开发】C++实现简单的线程池
  8. 超全的IE兼容性问题及解决方案
  9. order pick-up and delivery problem
  10. PPT 中用 LaTeX 插入公式、PowerPoint 中用 LaTeX 插入公式(4)