【发布时间】:2016-04-06 17:00:28
【问题描述】:
只是对提高项目中的代码质量感到困惑。将 NSArray 对象分配给另一个 NSArray 对象是否正确。但我没有分配一个 NSArray 对象。
它就在代码下面吗?内存管理问题有什么问题吗?
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, weak) NSArray *array1;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *array2 = [[NSArray alloc] initWithObjects:@"A",@"B",@"C", nil];
NSLog(@"array2 count : %lu",(unsigned long)array2.count);
self.array1 = array2;
NSLog(@"array1 count : %lu",(unsigned long)self.array1.count);
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Output :-
2016-04-06 22:22:56.057 PhotoViewer[969:56203] array2 count : 3
2016-04-06 22:22:56.057 PhotoViewer[969:56203] array1 count : 3
我的问题,array1对象是否需要alloc?
Ex : self.array1 = [[NSArray alloc] init];
self.array1 = array2;
【问题讨论】:
-
如果您接下来要做的是通过为指针分配不同的对象来替换它,则无需分配一个数组来分配给
array1指针。 -
上面的代码会为你提供两个变量,它们都指向同一个对象。如果你真的想要一个对象的单独副本,你必须专门执行一个副本。
标签: ios objective-c memory-management nsarray