簡體   English   中英

NSMutable數組 - 分配和保留對象

[英]NSMutable array - assign and retain objects

我需要一些關於如何分配,保留對象的信息。

例如 - 如果我們有兩個viewcontrollers並且需要將一個數組數據從viewcontrlr 1傳遞給viewContrl 2,我們如何將視圖1中的對象發送到視圖2並在視圖1中釋放它並將其保留在視圖2中。

simple =運算符只是指定再次指向查看1對象的地址。 什么是最好的方法,以便我們可以在視圖1中釋放obj,並在從視圖1傳遞時在視圖2中保留新對象。

在視圖控制器2中創建一個NSMutableArray並為其聲明一個retain屬性。

@interface VC2 : UIViewController
{
   NSMutableArray *mutableArrayInVC2
} 
@property (nonatomic, retain) NSMutableArray *mutableArrayInVC2

然后在您的視圖控制器中,您可以傳遞它:

viewController2Instance.mutableArrayInVC2 = mutableArrayInVC1

通過以下方式發布它是安全的:

[mutableArrayInVC1 release];

[編輯處理你的評論]

當你為mutableArrayInVC2聲明一個retain屬性並將mutableArrayInVC1傳遞給它時,“幕后”你通過它的setter方法訪問變量,如下所示:

-(void)setMutableArrayInVC2:(NSMutableArray *)arrayValue
{
    [arrayValue retain]; // This is your mutableArrayInVC1
    [mutableArrayInVC2 release]; // This is nil the first time you access it which is cool - we can send messages to nil in ObjC
    mutableArrayInVC2 = arrayValue; // So basically you end up doing and assignment but only after retaining the object so it is pointing to the same memory address BUT it is now 'owned' by your VC2 instance.
}

希望它有意義! ROG

此外,您可能希望查看本文以獲取有關保留計數機制的信息。 它與Mac OS X的Cocoa Programming非常相似,IMO是關於Cocoa和Obj-C的最佳介紹書之一。 我不確定你對Obj-C / Cocoa有多少經驗,但如果你正在尋找那種介紹,那么這是一個很好的起點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM