博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC基础知识
阅读量:6264 次
发布时间:2019-06-22

本文共 1451 字,大约阅读时间需要 4 分钟。

1.实例变量命名规范:_name  下划线起始。国内编程无此习惯,要知道下划线起始的是实例变量

2.protected 继承类的时候可以用,即子类可用其父类的protected型实例变量
3.getter方法名称不能是 -(int)getAge这样,应写为-(int)age;
4.带形参的函数中“:”是函数名的一部分
5.设置器、访问器,即getter、setter方法
6.只读,就是没有setter方法,实例变量可以在getter方法中返回一个默认值,如果用@property属性,则自定义一个getter方法,且最好不要与默认getter方法名重名,例如:
@property(retain,nonatomic,getter=name2)NSString *name;
-(NSString *)name2;//自定义getter方法,在实现中,返回一个固定的name即可
(return @“mm”);
7.comond+鼠标点击函数名,可直接进入函数体
8.@property @synthesize
@property(retain,nonatomic)NSString* name;
@property(assign,nonatomic)int age;
@property(retain,nonatomic)NSString* name,*address,*hobby;
@synthesize name=_name,age=_age,address=_address,hobby=_hobby;
“=”等号不是赋值的意思。_name是编译器生成的实例变量,name,address,hobby等这些都是属性名称,可以理解为方法名,根据这些名称来生成setter和getter方法。调用时用 对象名.属性名,不能用 点运算符来调用后边的实例变量,像 对象名._name 这样是错误的。
@synthesize name,age,address,hobby;//代表实例变量声明,即默认为       name=name,age=age……实例变量名称随意取
9.stu.name=@"zzh";//点运算符方法赋值时直接调用setter方法,取值时自动调用的是getter方法,但它们的书写方法是一样的,都是  对象名.属性名,调用在“=”左边相当于调用setter方法,在“=”右边相当于调用getter方法
NSLog(@"我是来自%@的%@,我今年%d,我爱好%@",[stu address],stu.name,stu.age,[stu hobby]);
10.自定义setter和getter方法,命名最好与默认方法区分。自定义getter是为了达到只读目的,自定义setter是为了增加复杂功能,如:验证输入。以后编程中很少自定义setter和getter方法,验证一般在其他部分了。
11.线程安全:atomic多线程访问时保证线程安全(例如:同时多个窗口卖票,保证同一张票只卖给一个人)
                     nonatomic不保证线程安全(默认)
内存管理:assign默认值,直接赋值,不关心内存管理
                  retain 关心内存管理,使用retain使引用计数器加1
一般用法就是,原始数据类型用assign,指针型用retain,特殊模式下(比如代理模式)区别对待

转载于:https://www.cnblogs.com/cocoajin/archive/2013/05/16/3081748.html

你可能感兴趣的文章
打包zip下载
查看>>
js正则表达式
查看>>
带有WS-Security验证的webservice
查看>>
【模式匹配】更快的Boyer-Moore算法
查看>>
[xsy3343]程序锁
查看>>
vue.js学习之 如何在手机上查看vue-cli构建的项目
查看>>
javascript 2词法结构
查看>>
BZOJ1008|HNOI2008 越狱
查看>>
Linux学习笔记二:Ubuntu安装SSH(Secure Shell)服务
查看>>
杭电2048--神、上帝以及老天爷
查看>>
CSS选择器
查看>>
excel
查看>>
echarts 通过ajax实现动态数据加载
查看>>
python-web-server-tcp1
查看>>
shell脚本入门
查看>>
Management
查看>>
URAL 2048 Histroy(打表+模拟)
查看>>
深入理解String, StringBuffer, StringBuilder的区别(基于JDK1.8)
查看>>
【转】oracle in与exists语句的区别
查看>>
RPC 使用中的一些注意点
查看>>