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;
XCode下在不同位置声明变量的用法(转)的更多相关文章
- ECMAScript1.1 js书写位置 | 声明变量 | 基本数据类型 | 数据类型转换 | 操作符 | 布尔类型的隐式转换
js书写位置 由于在写css样式时使用的时双引号,所以我们在写js代码时建议使用单引号(‘’)! 行内式 <input type="button" value="点 ...
- Mysql 嵌套游标添以及任意位置声明变量的方法
在写存储过程的时候,会遇到某个游标的筛选条件来自于 先前语句运行的结果,比较常见的方式是 再写一个存储过程,通过调用来完成 动态参数的配置, 或者使用 动态sql的功能,而这两种方式都不能很好的解决这 ...
- 【转】基于linux下的变量声明declare的用法
转自:http://techcurtman.iteye.com/blog/1249512 declare 功能介绍:声明变量的属性,如果使用declare,后面没有任何参数,那么bash就会主动将所有 ...
- IOS OC声明变量在@interface括号中与使用@property的区别
方式一:直接在@interface中的大括号中声明. @interface MyTest : NSObject{ NSString *mystr; } 方式二:在@interface中声明,然后再在@ ...
- IOS OC声明变量在@interface括号中与使用@property的区别(转载)
刚开始接触OC再看别人写的代码的时候,常常困惑于人家在声明属性时的写法,总结出来有三中方式,不知道哪一种比较规范化,现在我把三种方式贴出来,然后再一一探讨每个方式声明属性的区别. 方式一:直接在@in ...
- 【学习总结】声明变量在@interface括号中与使用@property的区别
方式一:直接在.h文件@interface中的大括号中声明. @interface Test : NSObject { NSString *str; // 私有变量 , 其他类无法访问,只能够该类内部 ...
- Windows下如何配置tomcat环境变量
Apache Tomcat 是一款 Java Servlet 和 JavaServer Pages 技术的开源软件实现,可以作为测试 Servlet 的独立服务器,而且可以集成到 Apache Web ...
- Python 2 声明变量 输入输出 练习
变量: 代指,用于将具体信息对应到一个值,便于反复使用时方便调用.例如 name = ("斯诺登") 变量声明规则:以字母开头的 字母数字下划线的组合.且不能是python代 ...
- ES6之用let,const和用var来声明变量的区别
var(掌握) 不区分变量和常量 用var声明的变量都是变量,都是可变的,我们可以随便对它进行运算操作.这样当多个人进行同一个项目时,区分变量和常量会越来越难,一不小心就会把设计为常量的数据更改了 ...
随机推荐
- “kill -9” 和 “kill -15” 有什么不同
来看下图,其中关键参数 -n signum 表示的是信号编码. kill kill 可以用 kill -l 来查看具体有哪些信号编码,这里重点关注 9) SIGKILL 和 15) SIGTE ...
- 28 Flutter 轮播图 flutter_swiper
中文地址: https://github.com/best-flutter/flutter_swiper/blob/master/README-ZH.md 基本参数 参数 默认值 描述 scrollD ...
- Centos7彻底删除PHP
查看php版本命令: #php -v 下面的命令是删除不干净的 #yum remove php 因为使用这个命令以后再用 #php -v 还是会看到有版本信息的..... 必须强制删除,使用下面命令查 ...
- Node.js报错TypeError: Cannot read property 'isDirectory' of undefined
截图如下: 原因如下:记住"./uploads" 后要加一个/ fs.stat("./uploads/" + files[i], function(err, s ...
- Java中四个作用域的可见范围
作用域 当前类 同一包 子孙类 其他包 public √ √ √ √ protected √ √ √ × friendly或default(即没有修饰符时的权限) √ √ × × private √ ...
- 基于OpenCV的同态滤波
在4.0.1节中,我们已经介绍了一个简单的图像形成模型,即照射-反射模型.这个模型可以开发一种频率处理程序,该程序可以同时压缩灰度范围和增强对比度来改善一幅图像的表现.图像形成的照射-反射模型的表达式 ...
- weblogic搭建总结
目录: 一.安装weblogic软件 二.创建域 三.启动管理节点 四.创建被管理节点 五.部署应用 一.安装weblogic软件 一.关闭selinux和防火墙 service iptables s ...
- Python数据分析练手:分析知乎大V
原文链接:https://zhuanlan.zhihu.com/p/92768131?utm_source=tuicool&utm_medium=referral 知乎,可以说是国内目前最大的 ...
- 路由器01---k2刷Pandora
1.固件 固件(Firmware)就是写入EPROM(可擦写可编程只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序. 对于独立可操作的电子产品,固件一般指它的操作系统(“担任着一个数码产品 ...
- 《Mysql 事务 - 隔离》
一:事务概念 - ACID(Atomicity.Consistency.Isolation.Durability,即原子性.一致性.隔离性.持久性) 二:事务产生的问题 - 多个事务同时执行的时候 ...