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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 木马免杀方式_木马入侵的常见方法

    木马免杀方式_木马入侵的常见方法前言免杀,又叫免杀毒技术,是反病毒,反间谍的对立面,是一种能使病毒或木马免于被杀毒软件查杀的软件。它除了使病毒木马免于被查杀外,还可以扩增病毒木马的功能,改变病毒木马的行为。免杀的基本特征是破坏特征,有可能是行为特征,只要破坏了病毒与木马所固有的特征,并保证其原有功能没有改变,一次免杀就能完成了。免杀技术也并不是十恶不赦的,例如,在软件保护所用的加密产品(比如壳)中,有一些会被杀毒软件认为是木马病毒;一些安全领域中的部分安全检测产品,也会被杀毒软件误杀,这时就需要免杀技术来应对这些不稳定因素。1、裸

  • 树莓派3B 系统安装及初始化配置教程[通俗易懂]

    树莓派3B 系统安装及初始化配置教程[通俗易懂]本文仅供学习交流使用,如侵立删!企鹅:1033383881相关软件下载链接SD卡格式化工具、系统烧录工具、Raspbian系统镜像https://pan.baidu.com/s/1o5j_uD31hxLsPP–GRZ4Bw提取码:9nhv1.烧录系统1.1SD卡格式化安装SD卡格式化工具,格式化SD卡1.2写入系统镜像至SD卡点击写入后会有个确认覆盖弹窗提示,YES即…

  • 香农编码的 matlab 实现「建议收藏」

    香农编码的 matlab 实现「建议收藏」closeall;clearall;clc;%香农编码matlab实现p=[0.50.190.190.070.05]%输入概率n=length(p);y=fliplr(sort(p));D=zeros(n,4);D(:,1)=y’;fori=2:nD(1,2)=0;D(i,2)=D(i-1,1)+D(i-1,2)…

  • DEDECMS去掉自动生成首页或栏目后面带的index.html

    DEDECMS去掉自动生成首页或栏目后面带的index.html

  • WeakHashMap初探「建议收藏」

    WeakHashMap初探「建议收藏」1、特点:随着时间的推移,其中的元素会被垃圾回收器回收2、涉及到的4中引用:强引用:(StrongReference)就是指在程序代码之中普遍存在的,例如以下代码:Objectobject=newObject();Stringstr=”hello”;强引用关联的对象在内存不够时也不会被垃圾回收器回收,回收时间:当前对象为null时被回收;软引用:(SoftRefe…

  • GOland2021 激活码破解方法

    GOland2021 激活码破解方法,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

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