加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

IOS之学习笔记五(合成存取方法)

发布时间:2023-03-30 11:09:23 所属栏目:教程 来源:
导读:IOS之学习笔记五(合成存取方法)

一、主要属性介绍
1、自动合成setter、getter方法

1)、接口部分@property指定属性 2)、实现部分@synthesize

如果

@syntheszie widows = _windows

这里成员变量名是
IOS之学习笔记五(合成存取方法)

一、主要属性介绍
1、自动合成setter、getter方法

1)、接口部分@property指定属性  2)、实现部分@synthesize

如果

@syntheszie  widows = _windows

这里成员变量名是_windows,而不是windows

2、atomic(nonatomic)

这里主要是指存取方法为原子操作,实现线程安全,atomic是默认,保证线程安全,但是会导致性能降低,单线程我们一般考虑nonatomic

3、copy

用这个修饰了属性名,把副本值设置给类的属性,如果赋值的副本发生改变,但是类部的属性值不会改变

4、getter、setter

如果(getter = ff1,setter = ff2),会把默认的getter方法改为ff1,会把默认setter方法改为ff2,我们调用的时候就是[对象 ff1]、[对象 ff2]

5、readonly、readwirte

readonly是指系统指合成getter方法,不合成setter方法

readwirte是默认的,都合成

6、retain

使用retain指示定义属性时,当莫个对象赋值给属性时,该属性原来所引用的对象引用计数减1,被赋值对象的引用计数加1

当一个对象的引用计数大于1时,该对象不该被回收。

7、strong、weak

strong:指被赋值对象持有强引用,不会自动回收

weak:使用弱引用指向被赋值对象,该对象可能被回收

二、测试demo
User.h

#ifndef User_h
#define User_h
#import <Foundation/Foundation.h>
@interface User : NSObject
@property (nonatomic) Nsstring *name;
@property (nonatomic) Nsstring *city;
@property (nonatomic,copy) Nsstring *add;
@property Nsstring *pass;
@property NSDate *birth;
@property NSDate *birth1;
@end
#endif /* User_h */
 User.m

#import <Foundation/Foundation.h>
#import "User.h"
@implementation User
@synthesize name = _name;
@synthesize pass;
@synthesize  birth;
-(void) setName:(Nsstring *)name
{
    self->_name = [Nsstring stringWithFormat:@"hello%@",name];
}

#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "Person.h"
#import "Apple.h"
#import "User.h"
#import "Args.h"
#import "KVCPerson.h"
int main(int argc,char * argv[]) {
    @autoreleasepool {
             
        User *user = [User new];
        NSMutableString *name = [NSMutableString stringWithString:@"chencaifeng"];
        NSMutableString *city = [NSMutableString  stringWithString:@"hunan"];
        NSMutableString *addr = [NSMutableString stringWithString:@"luyunlu"];
        [user setName:name];
        [user setCity:city];
        [user setAdd:addr];
        [user setPass:@"hello"];
        [user setBirth:[NSDate date]];
        NSLog(@"name is %@,and pass is %@,birth is%@,city is%@,add is %@",[user name],[user pass],[user birth],[user city],[user add]);
        //我们把setName函数重写了,虽然name后面追加了字符串,但是后面打印值没有改变
        [name appendString:@"chenyu"];
        //由于这里属性没有加copy,city后面追加了字符串,所以后面打印也变了
        [city appendString:@"changsha"];
        //由于这里属性加了copy,由于这个addr后面值追加了,所以后面打印不会改变
        [addr appendString:@"kanyunlu"];
        NSLog(@"name is %@,[user add]);
        
        //这里是用.操作
        user.add = @"hello";
        NSLog(@"user add is %@",user.add); 
    }
}
 
三、运行结果
name is hellochencaifeng,and pass is hello,birth isFri Jul  6 19:51:04 2018,city ishunan,add is luyunlu
name is hellochencaifeng,city ishunanchangsha,add is luyunlu
user add is hello
 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章