iOS 区分一些关键字和修饰词

  • assign 和weak

两者都是弱引用,两者修饰的属性在指向一个对象时都不会增加对象的引用计数,当所指的对象被释放时,weak的属性会被置为nil,而assign不会,所以,weak相对来说比较安全。assign可以用非OC对象以及基本类型,而weak必须用于OC对象。

  • __block和__weak

__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,也可以修饰基本数据类型
__weak只能在ARC模式下使用,只能修饰对象(NSString),不能修饰基本数据类型
__block修饰的对象可以在block中被重新赋值被修改,__weak修饰的对象不可以修改

  • Equal 和 isEqualToString

isEqual: 判断两个对象的等同性,首先判断两个对象的地址是否相同,再判断类型是否一致, 然后再判断对象的具体内容是否一致,IsEqual 是 NSObject 的方法
isEqualToString 是 NSString 的方法,因此从继承关系角度来说isEqualToString 是 isEqual 的衍生方法,
isEqualToString: 直接判断字符串内容是否相等。
==: 对于基本数据类型,
==运算符比较的是值;
对于对象类型, ==运算符比较的是对象的地址是否相同。

你可能感兴趣的:(iOS 区分一些关键字和修饰词)