У меня есть класс со свойством NSArray с использованием ARC ничего фантазии ...NSArray изменен только если класс передается
#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];
}
Я попробовал некоторые другие методы с только строки и строки не изменяются, так что я не знаю, почему они изменяются, если передается класс, содержащий их ...
@Nick Вам нужно сделать '' myArray' в NSMutableArray'. Я также забыл исправить подпись 'setArrayByPassingArray' - теперь я ее редактировал. – dasblinkenlight
NSMutableArray также не работал, но менял его на - (void) changeArray: (NSMutableArray **) array { * array = [[NSMutableArray alloc] initWithObjects: @ "test", @ "test2", nil]; а затем с помощью & array, чтобы он передавал указатель ... спасибо за вашу помощь } - (void) changeArray2: (NSArray **) array { * array = [[NSMutableArray alloc] initWithObjects: @ " test ", @" test2 ", nil]; – Nick
@Nick Трюк с указателем на указатель должен сработать, вот как «бедный человек проходит по ссылке» работает в C и Objective C. Трюк с 'NSMutualArray' тоже должен работать: убедитесь, что метод вызывает' setArray' вместо выполнения задания. – dasblinkenlight