ibireme/YYModel

YYClassPropertyInfo中按位或运算符

BlankConan opened this issue · 1 comments

我想知道 YYClassPropertyInfo 在初始化的时候,对 type encoding 为什么使用 按位或的操作,为什么不直接对 type 赋值,这样做有什么好处吗?

          YYEncodingType type = 0;
            case 'R': {
                type |= YYEncodingTypePropertyReadonly;
            } break;
            case 'C': {
                type |= YYEncodingTypePropertyCopy;
            } break;
            case '&': {
                type |= YYEncodingTypePropertyRetain;
            } break;
            case 'N': {
                type |= YYEncodingTypePropertyNonatomic;
            } break;
            case 'D': {
                type |= YYEncodingTypePropertyDynamic;
            } break;
            case 'W': {
                type |= YYEncodingTypePropertyWeak;
            } break;
            case 'G': {
                type |= YYEncodingTypePropertyCustomGetter;
                if (attrs[i].value) {
                    _getter = NSSelectorFromString([NSString stringWithUTF8String:attrs[i].value]);
                }
            } break;

以及在 _YYModelPropertyMeta 的构造方法中:

    if ((meta->_type & YYEncodingTypeMask) == YYEncodingTypeObject) {
        meta->_nsType = YYClassGetNSType(propertyInfo.cls);
    }

希望大神们能解释一下,感谢!!!