assignable

阅读 / 问答 / 标签

Java控制台log4j:org.apache.log4j.ConsoleAppender" object is not assignable to a 报错,求解?

为什么不能运行,它报错只能导致日志记录失败,跟你项目本身有什么关系你好好看看你的 log4j的propertys或者xml配置文件,看看你自定义的几个Appender都错在哪了

电子琴接口sustain assignable jack是什么意思?

是的,踩下延音踏板当键盘按键松开后,该键音色会产生延音效果。

Expression is not assignable分析

当我们想要修改CGSize,CGRect中的某个参数时我们如果这样写: self.view.frame.size.height = 10.f; 编译器会报错: "Expression is not assignable" 这是因为 self.view.frame 是Objective-C中的 点语法 , 点语法 本质就是 set与get方法 ,是读取或者设置view的frame属性,实际上这是消息传递。 而 frame 属性是一个 CGRect 结构,所以 frame.size.height 是C语言的语法,就是访问CGRect结构中的size字段,同样,height是CGSize结构的一个字段, 这里的点并不是点语法,而是C中结构体访问字段的方式 。 我们知道,点语法在等号左侧就是set方法,在右侧就是get方法,是不够精准的,例如 self.view1.view2.view3.frame ,在等号左侧的时候,OC语法会把它转换成 [[[[self getView1] getView2] getView3] setFrame] ,实际只有最后一个OC的点语法代表了set方法。 self.view.frame 在等号的左侧, frame 后面的 点 是C语法, view.frame 中的 点 是这个语句中最后一个OC点语法,所以这个 点 代表 set方法 , self.view.frame 在等号的左侧 ,OC 点语法会把它转换成 [[self getView]setFrame:frame] 是一个设值方法 参数是frame。这句话会被转成C语言的函数调用形式,类似于这种形式: set_frame(frame) ,所以 self.view.frame 这个语句在等号左边是一个需要frame参数并且无返回值的函数。 在C语言里, set_frame(frame).size.height = 10.f 给一个无返回值函数直接赋值,并且你还没有给这个函数进行传参,这是一种错误的语法。所以编译器告诉你"这个表达式无法被赋值"。 解决办法就是,用OC中的点语法也就是get方法取这个结构体属性,用C的结构体点语法对这个属性中的字段进行修改,然后用OC中的点语法也就是set方法设置这个结构体属性 说白了 导致这个问题出现的原因就是 点语法的问题,有的点是OC语法 有的点是C语法。C语法是没有问题的,问题在于OC是怎么判断点语法什么时候是set方法,什么时候是get方法。我们理所当然的认为了view.frame中的点是一个get方法,实际在这里OC把它当做了set方法。