在oc中的類會有某些私有屬性,這些屬性通常寫在.m檔案中或在.h檔案中用@private關鍵字進行修飾。某些類之所以有某些私有屬性是因為不想這些屬性被外界訪問並修改。但我們仍能對私有屬性進行訪問和修改。訪問以及修改私有屬性有兩種方式:kvc、runtime。
1.kvc
我們可以用setvalue:的方法設定私有屬性,並利用valueforkey:的方法訪問私有屬性。假設我們有乙個類person,並且這個類有乙個私有屬性name。看**:
// 利用
kvc訪問私有屬性
person
* ls = [[
person
alloc
] init];
[ls
setvalue
:@"wo"
forkey
:@"name"];
nslog
(@"*****==%@"
, [ls
valueforkey
:@"name"])
2.runtime
// 利用run time
訪問並修改私有屬性
person
*p = [
person
new];
// ivar
是runtime
宣告的乙個巨集
unsigned
intcount = 0;
//count
記錄變數的數量
// 獲取類的所有屬性變數
ivar
*members =
class_copyivarlist
([person
class
], &count);
for(int
i =
0; i < count; i++)
nslog
(@"%@"
, [p
valueforkey
:@"name"
]);
C 友元 在乙個類中,訪問另乙個類中的資料。
widget.h class overview dialog widget的友元類 class widget public qwidget void widget on overviewbtn clicked widget類,以及他的友元類overview dialog,以及槽函式部分 槽函式的功能...
c 中類外訪問乙個類的私有成員
正常來說,類外無法訪問類內的private成員,只能通過類內成員訪問private成員,在類外,無論是通過類指標還是類物件都無法直接訪問類中的private成員 c 類中的私友成員是不能通指標操作的。include using namespace std class a int main void ...
ios開發中獲取string寬度的乙個小應用
設計乙個label顯示效果如下 其中數字是獲取來的,在變動 思路 將label拆為3個小label,先獲取第乙個label的長度,第二個label在平移第乙個label的長度,計算第二個label的長度,第三個label平移第乙個label加上第二個label的長度 實現 1 新建乙個uiview取...