編譯時 報錯處理(一)結構體問題

2021-07-25 16:42:54 字數 948 閱讀 1477

_btn.frame.origin.y -= 10;

expression is not assignable

報錯原因:oc語法規定:不允許直接修改某個物件的結構體屬性的成員

_btn 是個物件

frame是個結構體。

物件和結構體是不一樣的,結構體是c語言中的,裡面可以定義許多屬性,但是不能定義方法,而物件是即可以定義屬性又可以定義方法的,是典型的物件導向語法。

如何改變物件中結構體屬性的成員:

解決方法一:

// 既然不能直接修改物件中的結構體屬性成員

// 先取出結構體

cgrect

frame =

_btn

.frame;

// 修改結構體

frame.

origin.y

-=10;

// 將修改後的結構體重新賦值回去

_btn

.frame

= frame;

解決方法二:

// 先取出y值

cgfloat

y =_btn

.frame

.origin.y

; // 修改y值

y -= 10;

// 重新設定

_btn的y

值,其他屬性和

_btn

保持不變

_btn

.frame

=cgrectmake

(_btn

.frame

.origin.x

, y,

_btn

.frame

.size

.width

,_btn

.frame

.size

.height

);

編譯時 報錯處理(二)id型別

nsinteger i sender.tag property tag not found on object of type strong id 報錯原因 id型別不能使用點語法 解決方式一 利用get 方法獲取 tag值 nsinteger i sender tag 解決方式二 將id 強轉為u...

redis編譯報錯處理

1 報錯 root host2 006 redis 5.0.8 make cd src make all make 1 entering directory data redis 5.0.8 src cc adlist.o in file included from adlist.c 34 0 zm...

windows jenkins編譯報錯處理

build step execute windows batch command marked build as failure jenkis,在執行windows命令編譯.net專案的時候命令執行成功了,但是卻還是報了這樣乙個錯 build step execute windows batch c...