iOS 属性的set方法 _string = string;是什么意思?

发现最近自己特别悲剧,可能是因为地基没打好,直接学习的怎么建房子,可是地基已经修订了,所以房子都是按照地基去建的承重墙啊,一些简单的隔断墙,也是地上讯息。反而是一些基础中的基础,总是被抬到台案上来。

今天算是忍不住了,比如写一个属性:

@property (nonatomic, assign) NSInteger selectedIndex;

set方法:

- (void)setSelectedIndex:(NSInteger)selectedIndex {

_selectedIndex = selextedIndex;

}

前面那个_selectedIndex还真不能保准的说一下是啥意思,这种问题,不会有面试官问我,但是我会自己问自己,因为自己哪里不行,自己心里明白,无聊的时候,还是很想搞清楚明白的。

查了一下,没有相关资料,可能是因为搜索词条不准确,但是也找到了些信息,对我有帮助。_selectedIndex是系统给我们自动生成的,只要写了@property形式的属性,这个_selectedIndex变量就会自动生成,那么赋值给他的那个值,selectedIndex我们知道,都是在给这个属性赋值的外来值,比如self.selectedIndex = 5;

这里要说一下,self.selectedIndex就是调用了selectedIndex的set方法,你调用了set方法,本身就想赋值,那么你想赋值的这个值就是5;

那么此时你可以不给系统的那个_selectedIndex赋值,但是你在出了set方法以外的地方使用selectedIndex属性,这个值就没有值。我去试一下。挺开心的,因为事实说明,确实是这样,如果你不给赋过来的值selectedIndex再传给系统为我们自动创建的_selectedIndex,那么别的地方使用,将不会有值。无论使用self.selectedIndex还是使用_selectedIndex,都没有值,当然了,Bool类型初始值1或YES,NSInteger类型初始值0,但是这个值不是你赋给过来的。

从此点意义来讲,_selectedIndex的意思就是系统给我们自动创建了一个全局的变量,方便在set方法以外去使用,如果你不给他赋值,别处使用将没有值。

其实,说实话,无论是从开发时间,还是说当前年份,我出这样的文章,真是丢人啊!算了,我就把丢人的文章发出去。

时间: 2024-11-05 17:33:45

iOS 属性的set方法 _string = string;是什么意思?的相关文章

iOS开发 UITableView的方法和属性总结

本文描述UITableView的各种方法,属性,委托以及数据源.本文的目的只是总结UITableView的用法,详细的例子另撰文描述. 1 数据源  UITableViewDataSource协议 01 返回组(节)的个数,默认是返回1,如果只有1组数据,可以不用实现该方法. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 02 返回某一组的行数,该组由section的值决定 - (NSInteger)table

[读书笔记]C#学习笔记五: C#3.0自动属性,匿名属性及扩展方法

前言 这一章算是看这本书最大的收获了, Lambda表达式让人用着屡试不爽, C#3.0可谓颠覆了我们的代码编写风格. 因为Lambda所需篇幅挺大, 所以先总结C#3.0智能编译器给我们带来的诸多好处, 下一遍会单独介绍Lambda表达式. 这篇主要包括的内容有: 自动属性,隐式类型,对象集合初始化,匿名类型,扩展方法. 下面一起来看下C#3.0 所带来的变化吧. 1,自动实现的属性在C#3.0之前, 定义属性时一般会像下面这样去编写代码: 1 class Person 2 { 3 //定义私

iOS开发——实用篇&提高iOS开发效率的方法和工具

提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时在使用AppCode等其他的IDE,在这里我主要介绍Xcode中提升开发效率的方法. 1.善用快捷键 快捷键是开发中必不可少的,当你善于使用快捷键的时候,十指在键盘上飞舞,那画面太美,我不敢想象. 常用快捷键操作 2.常用代码片段 开发中有一些常用的代码,可以放到代码片段中,然后下次你就可以使用快捷

C#利用反射来判断对象是否包含某个属性的实现方法

本文实例展示了C#利用反射来判断对象是否包含某个属性的实现方法,对于C#程序设计人员来说有一定的学习借鉴价值. 具体实现代码如下: 1 /// <summary> 2 /// 利用反射来判断对象是否包含某个属性 3 /// </summary> 4 /// <param name="instance">object</param> 5 /// <param name="propertyName">需要判断的

invokeRequired属性和 invoke()方法

zt: http://www.x2blog.cn/jinhong618/?tid=22389 问: f (this.InvokeRequired) { this.BeginInvoke(new MethodInvoker(LoadGlobalImage)); return; } 是什么意思 答: c#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的 当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它,此时它将会在内部调用new

C#学习笔记四: C#3.0自动属性&amp;匿名属性及扩展方法

前言 这一章算是看这本书最大的收获了, Lambda表达式让人用着屡试不爽, C#3.0可谓颠覆了我们的代码编写风格. 因为Lambda所需篇幅挺大, 所以先总结C#3.0智能编译器给我们带来的诸多好处, 下一遍会单独介绍Lambda表达式. 这篇主要包括的内容有: 自动属性,隐式类型,对象集合初始化,匿名类型,扩展方法. 下面一起来看下C#3.0 所带来的变化吧. 1,自动实现的属性在C#3.0之前, 定义属性时一般会像下面这样去编写代码: 1 class Person 2 { 3 //定义私

@Required 注释应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常。

@Required 注释应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常. java public class Student { private Integer age; private String name; @Required public void setAge(Integer age) { this.age = age; } public

JAVA中的反射只获取属性的get方法

JAVA中的反射只获取属性的get方法 在开发过程中,我们经常需要获取类中某些属性的get方法,此时我们需要使用到反射,例如,我们在获得一个对象后,需要知道该对象的哪些属性有值,哪些没有值,方便我们后面的处理. 譬如在我们拼SQL语句时,就需要知道哪些字段为空或为NULL,此时我们在拼语句的时候需要剔除掉,若是我们采用一般的判断的办法,则会很复杂(需要处理好SQL中的AND关键字的有无 ),当然,我们也有另外的解决办法(例如将非空的键和值存入map中,再将map存入list集合中,然后循环集合做

ios中集合遍历方法的比较和技巧

本文原文发表自我的[自建博客],cnblogs同步发表,格式未经调整,内容以原博客为准 我是前言 集合的遍历操作是开发中最常见的操作之一,从C语言经典的for循环到利用多核cpu的优势进行遍历,开发中ios有若干集合遍历方法,本文通过研究和测试比较了各个操作方法的效率和优略势,并总结几个使用集合遍历时的小技巧. ios中常用的遍历运算方法 遍历的目的是获取集合中的某个对象或执行某个操作,所以能满足这个条件的方法都可以作为备选: 经典for循环 for in (NSFastEnumeration)