美文网首页
集合对象 作为属性(声明不可变)

集合对象 作为属性(声明不可变)

作者: foolish_hungry | 来源:发表于2018-05-08 12:37 被阅读0次

(参考 高质量iOS 与 OSX 的52 个有效方法)

@interface XXYPerson : NSObject

@property (nonatomic, copy, readonly) NSString *firstName;
@property (nonatomic, copy, readonly) NSString *lastName;
@property (nonatomic, copy, readonly) NSSet *firends;

- (instancetype)initWithFirstName:(NSString *)firstName lastName:(NSString *)lastName;

- (void)addFriends:(XXYPerson *)person;
- (void)removeFridends:(XXYPerson *)person;

@end
#import "XXYPerson.h"

@implementation XXYPerson
{
    NSMutableSet *_internalFriends;
}

- (instancetype)initWithFirstName:(NSString *)firstName lastName:(NSString *)lastName {
    self = [super init];
    if (self) {
        _firstName = firstName;
        _lastName = lastName;
        _internalFriends = [NSMutableSet new];
    }
    return self;
}

- (NSSet *)firends {
    return [_internalFriends copy];
}

- (void)addFriends:(XXYPerson *)person {
    [_internalFriends addObject:person];
}

- (void)removeFridends:(XXYPerson *)person {
    [_internalFriends removeObject:person];
}

@end

相关文章

  • 集合对象 作为属性(声明不可变)

    (参考 高质量iOS 与 OSX 的52 个有效方法)

  • Guava-不可变集合&&Multiset&&Multimap

    不可变对象 对象创建后,所有的状态和属性在整个生命周期内不能被修改 同理,不可变集合就是集合创建后,不能对集合中的...

  • js对象基本用法

    1.声明对象 定义:无序的数据集合、键值对的集合 写法 属性名:每个key都是对象的属性名(property) 属...

  • KVC(3) 访问集合属性

    访问集合属性 普通方式访问 可变代理方式 当你修改代理对象的时候,添加,删除,替换里面的内容,对应的集合属性的内容...

  • Guava 集合类

    不可变集合类 为什么要使用不可变集合不可变对象有很多优点,包括: 当对象被不可信的库调用时,不可变形式是安全的;不...

  • Kotlin-属性

    1、属性声明 var:可变变量 val:不可变变量 vararg:可变参数(用于参数声明) 类中声明的属性必须进行...

  • JS对象基本用法

      1. 声明对象的语法 对象定义 无序的数据集合(可以打乱顺序) 键值对集合{'name'(属性名)和'will...

  • Swift3.1_集合类型

    集合类型的可变性 集合类型的可变性取决于声明为let还是var,let声明的集合类型是不可变的,它的大小和内容都不...

  • KVC探讨-数组和集合、字典(二)

    **对象的属性可以是有序的数组, 也可以是无序的集合。 1.数组 当对象属性是可变容器时, 苹果给我们提供了下面的...

  • [22]Effective Objective-C 2.0【18

    第十八条:尽量使用不可变对象 这条主要讲尽量使用不可变的对象,也就是在对外属性声明的时候要尽量加上readonly...

网友评论

      本文标题:集合对象 作为属性(声明不可变)

      本文链接:https://www.haomeiwen.com/subject/cpiirftx.html