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


_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;

    // 重新設置_btny值,其他屬性和_btn保持不變

_btn.frame =CGRectMake(_btn.frame.origin.x, y,_btn.frame.size.width,_btn.frame.size.height);

發佈了80 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章