相关疑难解决方法(0)

myView.frame.origin.x = value; 不起作用 - 但为什么?

我知道我不能用这个:

myView.frame.origin.x = 25.0;
Run Code Online (Sandbox Code Playgroud)

而我必须使用它:

CGRect myFrame = myView.frame;
myFrame.origin.x = 25.0;
myView.frame = myFrame;
Run Code Online (Sandbox Code Playgroud)

而且我一直这样做,但我不知道为什么我必须这样做.我想在我的理解中填补这个空白.谁能解释一下?

如今Xcode为您提供"表达式不可分配".前一段时间你得到一个编译错误"Lvalue需要作为赋值的左操作数".

struct objective-c variable-assignment declared-property

31
推荐指数
2
解决办法
2万
查看次数

Cocoa Objective-c Property C结构赋值失败

我想更改变量值,它是另一个类的结构的成员.但价值并没有改变.

这是代码.

//Structure..

typedef struct {
    int a;
    double b;
} SomeType;


//Class which has the structure as member..
@interface Test2 : NSObject {
    // Define some class which uses SomeType
    SomeType member;

}

@property SomeType member;

@end


@implementation Test2

@synthesize member;

@end


//Tester file, here value is changed..
@implementation TesstAppDelegate

@synthesize window;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application 

    Test2 *t = [[Test2 alloc]init];

    t.member.a = 10;
//After this the value still shows 0 …
Run Code Online (Sandbox Code Playgroud)

cocoa structure properties objective-c

10
推荐指数
1
解决办法
7345
查看次数

将自定义结构中的值设置为Objective-C中的属性

我有一个带有标题的A类看起来像这样:

typedef struct {
    int x;
    int y;
} Position;

@interface ClassA : NSObject

@property Position currentPosition;

@end
Run Code Online (Sandbox Code Playgroud)

我尝试在另一个类中为属性分配位置结构的各个值,如下所示:

ClassA * classA = [ClassA new];
classA.currentPosition.x = 10;
Run Code Online (Sandbox Code Playgroud)

这给出了错误"表达式不可分配"并且不会编译.

我可以像这样设置:

ClassA * classA = [ClassA new];
Position position = {
    .x = 1,
    .y = 2
};

classA.currentPosition = position;
Run Code Online (Sandbox Code Playgroud)

我甚至可以改变position变量的各个"属性",如下所示:

ClassA * classA = [ClassA new];
Position position = {
    .x = 1,
    .y = 2
};

// WORKS
position.x = 4;    

// DOESN'T WORK
// classA.currentPosition.x …
Run Code Online (Sandbox Code Playgroud)

objective-c

6
推荐指数
1
解决办法
2311
查看次数

改变CGRect(或任何结构)?

我在代码中做了很多这样的事情:

self.sliderOne.frame  = CGRectMake(newX, 0, self.sliderOne.frame.size.width, self.sliderOne.frame.size.height); 
Run Code Online (Sandbox Code Playgroud)

有什么方法可以避免这种繁琐的代码吗?我尝试过这种类型的东西:

self.sliderOne.frame.origin.x = newX;
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个Lvalue required as left operand of assignment错误.

objective-c data-structures

4
推荐指数
1
解决办法
3628
查看次数