我在类中定义了一个属性:
@interface myClass
UIImageView *drawImage[4];
...
@property (nonatomic, retain) UIImageView **drawImage;
...
@synthesize drawImage; // This fails to compile
我在StackOverflow和其他地方发现了类似的问题,但没有一个真正解决这个问题。什么是最客观的C Kosher方法呢?
答案 0 :(得分:4)
你不能;你必须将retain
改为assign
并自己处理内存管理;因为您无法将-[retain]
发送到UIImageView **
(因为它不是对象。)
也就是说;您实际上无法使用@synthesize
因为assign
导致史诗内存泄漏,并且无法与retain
或copy
一起使用;你需要做的是实现-drawImage
和-setDrawImage:
并写一些实际的访问者代码。
但不要这样做。使用NSArray
。
答案 1 :(得分:1)
最“犹太”的方式是创建NSArray
个UIImageView
个对象,而不是C风格的数组。
答案 2 :(得分:1)
您遇到的一个问题是函数无法返回C或Objective-C中的C风格数组,您可能遇到的另一个问题是您无法将指针类型分配给数组类型(这是您的综合二传手可能会尝试做什么)。至少有两种解决方案:
struct
。您不能直接从函数返回C样式数组,但是您可以返回具有数组成员的struct
(请注意,没有retain
/ release
正在进行中。
typedef struct {
UIImage *image[4];
} ImageCollection;
...
@property (nonatomic, assign) ImageCollection drawImage;
...
@synthesize drawImage;