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

本文共 1382 字,大约阅读时间需要 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,特殊模式下(比如代理模式)区别对待

转载地址:http://rphnl.baihongyu.com/

你可能感兴趣的文章
ArcGIS js api 手动构建FeatureLayer
查看>>
Spark RDD持久化、广播变量和累加器
查看>>
Exception in thread "main" javax.validation.ValidationException: Unable to find a default provider
查看>>
Step by step SQL Server 2012的安装
查看>>
使用using 语句
查看>>
爱的十个秘密--5.友谊的力量
查看>>
(原創) 如何破解Quartus II 8.0 SP1? (SOC) (Quartus II) (Nios II)
查看>>
AspNetPager分页控件之url重写
查看>>
matlab练习程序(径向模糊1)
查看>>
余晟:做个懂产品的程序员
查看>>
转joson
查看>>
[翻译][erlang]cowboy路由模块使用
查看>>
HDU 2604 Queuing (矩阵乘法)
查看>>
Unity3D 记第二次面试
查看>>
[译]LINT TO SQL 介绍(数据库查询) - Part.3
查看>>
Custom Session-State Module
查看>>
QTP的那些事---有关web的自动化测试框架saffron的使用
查看>>
javascript简单对象创建
查看>>
nlog(n)解动态规划--最长上升子序列(Longest increasing subsequence)
查看>>
econtrol窗体设计器
查看>>