• OC基础知识


    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,特殊模式下(比如代理模式)区别对待

  • 相关阅读:
    ssh免密登录
    idea搭建flink环境
    idea快捷键列表
    scala对复杂json的处理
    配置三台服务器的时间同步-linux 及 ntp.conf配置文件详解
    91. Reverse Linked List 反转链表
    92. Reverse Linked List II 反转链表 II
    121. Best Time to Buy and Sell Stock 买卖股票的最佳时机
    53. Maximum Subarray最大子序和
    70. Climbing Stairs爬楼梯
  • 原文地址:https://www.cnblogs.com/cocoajin/p/3081748.html
Copyright © 2020-2023  润新知