iOS知识梳理 - Objc语法中值得注意的东西
栏目: Objective-C · 发布时间: 5年前
内容简介:@property、@synthesize和@dynamicobjc推荐我们通过set/get方法访问对象的属性。很显然,为每一个属性手动添加set/get方法的声明和实现是个性价比很低的重复劳动。因此,objc提供了一些关键字帮助我们简化这一过程。这几个关键字实际上就是这么回事儿。单独做了总结:
属性声明
@property、@synthesize和@dynamic
objc推荐我们通过set/get方法访问对象的属性。很显然,为每一个属性手动添加set/get方法的声明和实现是个性价比很低的重复劳动。因此,objc提供了一些关键字帮助我们简化这一过程。这几个关键字实际上就是这么回事儿。
单独做了总结: Objective-C的@property、@synthesize和@dynamic
注释
常规的 //
和 /* */
就不多说了
值得一提的是 #pragma
语法,
我们可以用 #pragma mark - UITableViewDataSource
这样的写法来为代码分块,xcode将会提供导航。
参考: #pragma
enum
typedef NS_ENUM(NSUInteger, TTGState) { TTGStateOK = 0, TTGStateError, TTGStateUnknow };
参考
Enum in OC
空指针
- NULL:C的空指针 (void *)0
- nil:objc的空对象 (id)0
- Nil:空的类指针 (Class)0
- NSNull:nil的包装类,为了表示dic里面的某个value为空 [NSNull null]
总结:前三个数值上是相等的,在objc中用nil比较普遍
BOOL
常见的就是bool和BOOL。
bool是 c语言 的,单独的一个类型(_Bool),在数值上true = 1,false = 0
bool类型只有true和false两种状态。
另外,条件判断语句在判断时,是以0为false,非0为true进行判断的。
由此有以下结论:
2 == true //假 (bool)2 == true //真 2 //真
BOOL是ObjC定义的真假值类型,它在64位机器上等价于bool,在32位机器上是signed char
其定义如下,参考objc4-750
/// Type to represent a boolean value. #if defined(__OBJC_BOOL_IS_BOOL) // Honor __OBJC_BOOL_IS_BOOL when available. # if __OBJC_BOOL_IS_BOOL # define OBJC_BOOL_IS_BOOL 1 # else # define OBJC_BOOL_IS_BOOL 0 # endif #else // __OBJC_BOOL_IS_BOOL not set. # if TARGET_OS_OSX || TARGET_OS_IOSMAC || (TARGET_OS_IOS && !__LP64__ && !__ARM_ARCH_7K) # define OBJC_BOOL_IS_BOOL 0 # else # define OBJC_BOOL_IS_BOOL 1 # endif #endif #if OBJC_BOOL_IS_BOOL typedef bool BOOL; #else # define OBJC_BOOL_IS_CHAR 1 typedef signed char BOOL; // BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" // even if -funsigned-char is used. #endif
YES和NO
bool的表现已经讲过,这里关注一下BOOL作为signed char的表现。
这时,一个BOOL类型的变量值范围是-128~127,因此强制类型转换时可能会有异常:
BOOL boolVar = 256; boolVar //假 boolVar == 0 //真
另外强制类型转换时也不会把值转为0和1:
(BOOL)2 == true //假
综上,使用时需注意:
-
使用条件表达式时不需要跟YES、NO进行比较,如
if(var == YES)
应当直接写成if(var)
。 - 不要把其它类型强制转换成BOOL
参考:
内存管理
TODO:后面总结梳理。
以上所述就是小编给大家介绍的《iOS知识梳理 - Objc语法中值得注意的东西》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- openCV之中值滤波&均值滤波(及代码实现)
- golang中值类型/指针类型的变量区别总结
- C++ 实现 CVPR 2019 side window 中值滤波
- Go 1.15 中值得关注的几个变化
- Go 1.11中值得关注的几个变化
- Go 1.12中值得关注的几个变化
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Sovereign Individual
James Dale Davidson、William Rees-Mogg / Free Press / 1999-08-26 / USD 16.00
Two renowned investment advisors and authors of the bestseller The Great Reckoning bring to light both currents of disaster and the potential for prosperity and renewal in the face of radical changes ......一起来看看 《The Sovereign Individual》 这本书的介绍吧!