[英]Adding a instance of `NSMutableArray` into `NSArray` objects
我在NSArray
添加了NSMutableArray
的實例。
碼:
NSMutableArray *var2=[[NSMutableArray alloc]init];
[var2 addObject:@"c++"];
NSArray *var1=[[NSArray alloc]initWithObjects:var2, nil];
[var2 addObject:@"c"];
[var2 addObject:@"wt"];
NSLog(@"Mutable%@",var2);
NSLog(@"Simple%@",var1);
輸出:
2015-07-29 14:51:10.494 Kom4[3249:60b] Mutable(
"c++",
c,
wt
)
2015-07-29 14:51:10.496 Kom4[3249:60b] Simple(
(
"c++",
c,
wt
)
)
問題: NSArray
大小將在初始化時固定。 但是我們正在傳遞NSMutableArray
instance
。它的大小是靈活的。 這如何顯示輸出?
不, NSArray
將保持固定(它是不可變的)並且不靈活。
這是因為您持有對對象的引用 ,並且引用的大小永遠不會改變,無論引用的對象有多大。
您已使用對象初始化了NSArray,因此該數組包含指向該對象的指針。
如果要使用可變數組的對象對其進行初始化,請使用“ initWithArray:”代替: https : //developer.apple.com/library/prerelease/ios/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/index.html
您的輸出僅顯示相同的內容:一個數組,其中只有一個對象:另一個具有3個Elements的數組:
簡而言之:
@[
@[
@"c++",
@"c",
@"wt",
]
]
您的NSArray是固定的。 它包含您的NSMutableArray,僅此而已; NSMutableArray無法刪除,則不能向NSArray添加其他任何內容,因此它將包含NSMutableArray,直到其生命周期結束為止。
這並不意味着您不能更改NSMutableArray。 它總是相同的數組,但內容不同。 那就是您的NSLog顯示的內容; NSArray包含相同的對象,但內容不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.