#define CHECK(_sem) (sem_init(&(_sem)->sem, (pshared), (value)) == 0) ? ((_sem)->valid = true, 0) : ((_sem)->valid = false, -1)
然后使用的地方为
ret = CHECK(_sem)
也就是说,sem_init返回0时,_sem->valid被设置成true, ret被设置为0,
sem_init返回非0时,_sem->valid被设置成false, ret被设置为-1
原因如下:1、如果在方法init里调用self.view的话,就会调用view的getter方法, 这个时候,view是空的,那么系统就会自动创建一个view,然后就会触发ViewDidLoad方法。这时init方法里有数组初始化。
2、程序还没走到那步,而直接就给数组赋值了,那么这个值赋值给了一个不存在的数组.这样就容易出现错误。
所以,尽量不要在init方法里写可视化控件的语句.
例如:
- initWithFrame:(CGRect)frame array:(NSArray *)array {self = [super initWithFrame:frame]
if(self) {
// 做事情
}
return self
}
我这是随便写的,我只是提供用一个例子,我也不知道你具体要传什么参数.
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)