Objective-C —点语法 (梳理整理)

Objective-C —点语法 (梳理整理)

@property就是oc中常用的点语法,用起来十分简单。

应用@property (nonatomic, copy, readwrite, setter=setMyName:) NSString *string

1.点语法究竟是什么

举例说明吧


@property (nonatomic,strong)NSString* string;


上面这一句,等于下面这几句


{NSString* _string; 声明一个成员属性

– (NSString *)string  这个成员属性的读(get) 方法和实现

-(void)setString:(NSString *)string 这个成员属性的写(set)方法和实现


这样就很容易的可以看出,这样对于写程序来说省了很多事情

点语法中的(修饰符)

1.原子性atomict/nonatomic

所谓原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会切换到另一个线程。很明显nonatomic,也就是原子性的执行效率高;

2.读写操作readwrite,readonly

3.给set方法和get方法起别名 setter = set的方法名, getter = get的方法名;

4.内存管理相关

assign简单赋值,不更改索引计数 

retain释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1

copy  建立一个索引计数为1的对象,然后释放旧对象

strong引用计数+1

weak防止循环使用 如代理的时候

很明显这里涉及到了oc的内存管理;

oc的内存管理思路是这样的:(这里想要知道更多的话,要去学习MRC模式,本人水平有限,加之刚接触就用上了ARC,使用MRC模式要加-fno-objc-arc ,哎,都是惰性啊,不过思路是知道的)

就像是一个办公室的开灯问题;

1.第一个办公室的人打开灯->引用计数器+1  开灯即开拓内存空间

2.第二个第三个人来办公室,->引用计数器+1  灯已经打开,不必打开了。 即不必开拓内存,直接指向原内存空间就好

3.灯开的时候,有人离去; ->引用计数器-1,最后一个人关灯,关灯即释放,

 

最后写一个懒加载的例子来加深一下点语法的理解

懒加载:当使用到的时候才取创建,这样可以节省内存空间

        假如你有兴趣打下面这些代码。你会发现,_array  和 self.array 在我的这一段代码中是不能更换的,不报错,但是程序跑起来你会发现的。


@property (nonatomic,strong)NSMutableArray *array;

-(NSMutableArray *)array{

    if (!_array) {

        _array = [[NSMutableArray alloc]init];

//        _array 去取保存的数据

    }

    return _array;

}

UITableView的代理方法中

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    return self.array.count;

}


 

 

转载于:https://my.oschina.net/adso/blog/679256

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109007.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • attempted to return null from_unable to process jar entry

    attempted to return null from_unable to process jar entry**Springboot启动时报错Ifyouwantanembeddeddatabase(H2,HSQLorDerby),pleaseputitontheclasspath.**产生这个错误的原因是springboot的自动配置,如果你没有配置DataSource就会导致下图这个错误解决方案1@SpringBootApplication(exclude…

    2022年9月23日
    7
  • ant安装过程

    ant安装过程ant是jakarta一个非常好的OpenSource子项目,是基于java的编译工具。下面简单介绍一下在linux环境中如何安装ant:1.下载  从 http://ant.apache.org/bindownload.cgi 可以下载最新的tar包:apache-ant-1.8.1-bin.tar.gz 2.安装,直接解压到当前下载目录即可>tarzxpvfapach

    2022年7月18日
    23
  • 如何自动发送短信给女朋友

    如何自动发送短信给女朋友

    2021年9月17日
    79
  • pycharm激活码最新2022.01(JetBrains全家桶)「建议收藏」

    (pycharm激活码最新2022.01)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年4月1日
    208
  • 学计算机的男生喜欢什么样的女生,双子座男生喜欢什么样类型的女生[通俗易懂]

    学计算机的男生喜欢什么样的女生,双子座男生喜欢什么样类型的女生[通俗易懂]双子座男生喜欢什么样类型的女生来源:网络 日期:2018/8/118:55:34 累计阅读:293次双子男喜欢什么样类型的女生双子座温柔的女生对于双子座的男生来说,其实温柔的这个类型的女生会是双子座男生非常喜爱的,在任何一款类型当中,双子座的男生可以说是最疼爱和喜欢温柔类型的女生了,因为在现实生活当中,双子座的男生其实是一个比较自我的人,在恋爱的过程当中非常喜欢表达自己的清晰,而有时候不好的情绪…

    2022年7月25日
    14
  • Oracle to_date()函数的用法介绍

    Oracle to_date()函数的用法介绍to_date()是Oracle数据库函数的代表函数之一,下文对Oracleto_date()函数的几种用法作了详细的介绍说明,需要的朋友可以参考下在Oracle数据库中,Oracleto_dat

    2022年7月2日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号