OC之便利构造器和方法(笔记)

来源:互联网 发布:adobe软件如何下载 编辑:程序博客网 时间:2024/05/16 12:07

OC便利构造器和方法:

方法名 又称:selecter(选择器)
-(返回类型)方法名:(参数类型)参数名
//方法体
}
多参数函数:
-(返回类型)方法名:(参数类型)参数名   and方法名:(参数类型)参数名   and方法名:(参数类型)参数名

在静态方法+里面,最好不要调用self,已经不是当前对象。

单例模式:
在程序中,我需要一系列的对象,他们每一个内部都包含有一组变量和功能,是静态的,而且整个程序都只需要拥有一个该类的对象。

例如:
1、控制程序执行的命令器;
2、管理数据库;
3、音效控制;
4、文件处理等等。

main,m文件

//---单例的内存地址内容的改变----

        Student *st5=[Student sharedStudent];

        st5.name=@"庆平";

        NSLog(@"st5=%@",st5.name);

        

        Student *st6=[Student sharedStudent];

        st6.name=@"志强";

        NSLog(@"st5=6%@",st5.name);

student.h文件

//声明单例

+(id) sharedStudent;


student.m文件
//单例模式

static Student *singleton;

+(id) sharedStudent{

    @synchronized(self){//同一时间防止多线程并发访问,当多线程访问时,其他线程要等正在访问的线程访问结束才能进行访问   同步代码段,表示同一时间只允许运行一个线程访问

    if (singleton==nil) {

        singleton=[[Student alloc]init];

    }

    }

    return singleton;

}


定义属性时:什么情况下使用copy,assign,和retain。
    assign用于简单数据类型,如NSInterger ,double bool, retain 和copy 用户对象,copy用于当a指向一个对象,b也想指向同样的对象的时候,如果用assign ,a如果释放,再调用b会crash,如果用copy的方式,a和b各自有自己的内存,就可以解决这个问题。retain会使计数器加一,也可以解决assign的问题。另外atomic和nonatomic 用来决定编译器生成的getter和setter是否为原子操作。在多线程环境下,院子操作是必要的,否则可能引起错误的结构。加了atomic,setter函数会变成下面这样:
if (property!=newValue){
[propertyrelease];
property=[newValueretain];
}
0 0
原创粉丝点击