• 三、属性和点语法


    1.属性
    ①注意,写属性一定不要加下划线
    ②属性的特性-读写性:
    《1》readonly:只生成getter方法,不生成setter方法
    《2》readwrite:(系统默认)可读可写,生成getter,setter方法
    《3》setter= :给setter方法换一个新名字
    《4》getter=:给getter方法换一个新名字
    ③属性的特性-原子性:
    《1》atomic:原子特性。原子操作(setter、getter内部做了多线程访问处理),一般不用(系统默认)
    《2》nonatomic:非原子特性。非原子操作,声明属性时,通常使用nonatomic
    ④属性的特性-语义特性:
    MRC(手动引用计数)手动管理内存下使用
    《1》assign:修饰基本数据类型(可以修饰对象类型)
              使用:NSInteger、int、double、CGFloat...
    《2》retain:修饰类对象(不能修饰基本数据类型)
              使用:除字符串NSString以外的全部类对象类型
    《3》copy:修饰类对象(不能修饰基本数据类型)
    ARC(自动引用计数)
    《1》assgin:修饰基本数据类型(类对象类型)
    《2》weak:修饰类对象(不能修饰基本数据类型)
    《3》strong:修饰类对象(不能修饰基本数据类型)
    《4》copy:修饰类对象(不能修饰基本数据类型)
    ⑤如果有两个以上的语义,用“,”隔开
    ⑥注意setter方法不要忘记冒号
    ⑦使用属性的情况下,如果同时重写getter setter方法,需要写@synthesize
    示例:
    声明.h
    @interface Person:NSObject
    @property(nonatomic,setter=myNameIs:,getter=liuwa,copy)NSString* name;
    @property(nonatomic,assign)NSInteger age;
    @property(nonatomic,retain)NSString *sex;
    @property(nonatomic,copy)NSString *color;
    @end
    实现.m
    @implementation Person
    @synthesize sex = _sex;
    @synthesize age = _age;
    @synthesize color = _color;
    //retain
    - (void)setSex:(NSString *)sex{
         
         if(sex != _sex){
              [_sex release];
              _sex = [sex retain];
         }
    }
    - (NSString *)sex{
         
         return nil;
    }
    //assign
    - (void)setAge:(NSInteger)age{
         
         _age = age;
    }
    - (NSInteger)age{
         
         return _age;
    }
    //copy
    - (void)setColor:(NSString *)color{
         
         if(color != _color){
              [_color release];
              _color = [color copy];
         }
    }
    - (NSString *)color{
         
         return [[_color retain] autorelease];
    }
    @end
  • 相关阅读:
    WPF / Win Form:多线程去修改或访问UI线程数据的方法( winform 跨线程访问UI控件 )
    TCP 流模式与UDP数据报模式(转)
    hibernate 检索方式
    【UVA】1449-Dominating Patterns(AC自己主动机)
    软件项目工作流程图
    iOS7 UIKit动力学-碰撞特性UICollisionBehavior 下
    东莞无人工厂变成现实,中国无人工厂将非常快普及,保住世界工厂地位
    小米手机与魅族的PK战结果 说明了什么
    python Debug 单步调试
    合并两个排序的单链表
  • 原文地址:https://www.cnblogs.com/gnhxsk/p/5170717.html
Copyright © 2020-2023  润新知