Objective c 阻止其他对象访问C数组

Objective c 阻止其他对象访问C数组,objective-c,c,arrays,Objective C,C,Arrays,我有一个C数组,其中包含用于撤消绘图应用程序状态的数据。它是一个CGImageRef数组,但是,由于我不能将C数组声明为属性,所以我的所有实例都在访问同一个数组进行撤消。让一个对象只能访问给定的C数组(最好是它创建的数组)的最简单方法是什么 我不能将C数组声明为属性 当然你可以: @property (assign, nonatomic) CGImageRef *imageArray; 其他几点建议: 使用_桥转换转换为id类型,这通常要容易得多。 您可能应该使用来实现撤消管理。 使用NSAr

我有一个C数组,其中包含用于撤消绘图应用程序状态的数据。它是一个CGImageRef数组,但是,由于我不能将C数组声明为属性,所以我的所有实例都在访问同一个数组进行撤消。让一个对象只能访问给定的C数组(最好是它创建的数组)的最简单方法是什么

我不能将C数组声明为属性

当然你可以:

@property (assign, nonatomic) CGImageRef *imageArray;
其他几点建议:

使用_桥转换转换为id类型,这通常要容易得多。 您可能应该使用来实现撤消管理。
使用NSArray属性,并将CGImageRefs强制转换为id以添加它们。这没有意义。如果数组是从非公共ivar寻址的,则只有该对象类的方法才能寻址。@HotLicks听起来该数组当前是全局数组&OP不确定如何将C数组作为属性/ivarOh谢谢!我使用的是NSUndoManager,但是UndoManager使用数组来还原更改-它使用数组中的imageRef注册撤销,并将其传递给另一个方法。为什么不直接将cImageRef传递给撤销管理器呢?如果使用NsEndomanager,通常不需要跟踪撤消管理的任何状态。嗯,是的,我在使用,[[self.undoManager prepareWithInvocationTarget:self]performUndoOrRedoWithValueForImage:imageArray[undoCount];我缺少什么吗?只需注册当前操作的相反项。因此,如果您正在调用[self-setImage:newImage],然后调用[[self.undoManager prepareWithinLocationTarget:self]setImage:[self image]]首先,问题是变量的设置在我的NSDocument子类拥有的另一个对象中。因为我不能从那里使用撤消管理器,所以我让我的文档在数组中保留画布图像的副本。也许我只需要重新构造。