iOS9关键字的简单实用

来源:互联网 发布:苹果手机的mac地址在哪 编辑:程序博客网 时间:2024/05/17 01:40

nullable表示可以为nil

nonnull表示不可以为nil

以上关键字仅仅修饰对象,不修饰基本数据类型。因此可以用在属性、参数、返回值。

默认情况下不加nullable,setter和getter都可以为nil。

@property (nonatomic, strong, nullable) NSArray *array;@property (nonatomic, strong) NSArray * __nullable array;@property (nonatomic, strong) NSArray * _Nullable array;

- (nonnull NSString *)testString:(nonnull NSString *)string;- (NSString * _Nonnull)testString:(NSString * _Nonnull)string;- (NSString * __nonnull)testString:(NSString * __nonnull)string;

NS_ASSUME_NONNULL_BEGINNS_ASSUME_NONNULL_END


null_resettable

getter不可以为nil

setter可以为nil

如果使用null_resettable必须重写getter或setter方法,其目的为处理值为空的情况。

@property (nonatomic, strong, null_resettable) UIView *testView;


泛型

使用泛型可以较为容易的获取到其中的元素,并访问特有的属性和方法,一般用于集合,方法调用时有效果。

//属性使用@property (nonatomic, strong) NSMutableArray<NSString *> *testArrayM;//在方法中使用- (NSArray<NSString *> *)testStringArray:(NSArray<NSString *> *)stringArray;

在集合中规定对象的类型,通过集合取出的对象可以当做泛型来使用,并可以直接使用.语法



协变和逆变

__covariant 协变,用于数据强制转换类型,子类转变为父类

__contravariant 逆变,用于数据强制转换类型,父类转变为子类



__kindof

表示当前类或它的子类

__kindof放在类型前,表示修饰此类型

用于解决id类型无法在返回值中具体体现其类型问题

- (__kindof NSArray *)testStringArray:(NSArray *)stringArray;


0 0