私は NSArray プロパティを持つクラスを ARC を使用して空想のないもので持っています...
#import <Foundation/Foundation.h>
@interface MyClass : NSObject
property(nonatomic, strong) (NSArray *) myArray;
@end
#import "MyClass.h"
@implementation MyClass
@synthesize myArray = _myArray;
@end
別のクラス内でメソッドを使用してその配列を設定しようとした場合、配列のみが渡された場合は設定されません。ただし、クラスが渡された場合は設定されますが、その理由はわかりません....
これを両方の方法で試みるコードは以下のとおりです...
MyClass *myClass = [[MyClass alloc] init];
[self setArrayByPassingArray:myClass.myArray];
NSLog (@"%@", myClass.myArray)
//result is null
[self setArrayByPassingClass:myClass];
NSLog (@"%@", myClass.myArray)
//result is test, test2...
-(void)setArrayByPassingArray:(NSArray *)arrayToSet {
arrrayToSet = [[NSArray alloc] initWithObjects: @"test", @"test2", nil];
}
-(void)setArrayByPassingClass:(MyClass *)classWithArrayToSet {
classWithArrayToSet.myArray = = [[NSArray alloc] initWithObjects: @"test", @"test2", nil];
}
文字列だけで他のメソッドをいくつか試しましたが、文字列は変更されていないため、それらを含むクラスが渡された場合に変更される理由がわかりません...