在许多C/C++宏中,我看到宏的代码包含在看似无意义的do while循环中.这是一些例子.
#define FOO(X) do { f(X); g(X); } while (0)
#define FOO(X) if (1) { f(X); g(X); } else
Run Code Online (Sandbox Code Playgroud)
我看不出它do while在做什么.为什么不在没有它的情况下写这个?
#define FOO(X) f(X); g(X)
Run Code Online (Sandbox Code Playgroud) 对于那些了解这一点的人来说听起来可能非常愚蠢,但我对iOS很陌生.我想知道,为什么我们不能修改原点或大小,或者可能是UIView框架的这些属性的x,y或高度宽度?
frame是一个CGRect结构,原点和大小又是CGPoint和CGSize结构.当我们可以访问它们时,为什么我们无法修改它们?
在CGRect中没有这样的东西,我们可以修改它的属性,所以为什么我们不能用于框架或边界.
我有这个:
typedef struct objTag{
float x;
float y;
BOOL isUP;
} object;
Run Code Online (Sandbox Code Playgroud)
如何使对象成为这样的属性
@property (nonatomic, assign) object myObj;
Run Code Online (Sandbox Code Playgroud)
然后...
@synthesize myObj = _myObj;
Run Code Online (Sandbox Code Playgroud)
这个编译很好,但后来在代码中尝试类似的东西
self.myObj.isUP = YES;
Run Code Online (Sandbox Code Playgroud)
我收到消息"表达式不可分配"