[英]objective c interface access
这是我在ah文件中的第一个界面。
@interface EventRow : NSObject
{
NSString *title;
NSString *photo;
NSString *description;
NSMutableArray *photoArray;
}
@property (nonatomic , retain) NSString *title;
@property (nonatomic , retain) NSString *photo;
@property (nonatomic , retain) NSString *description;
@property (nonatomic , retain) NSMutableArray *photoArray;
@end
在同一文件中第二
@interface PhotoRow : NSObject
{
//NSString *image;
NSMutableArray *imageArray;
}
@property (nonatomic , retain) NSMutableArray *imageArray;
@end
现在,每个具有填充数组(图像数组)的“ PhotoRow”对象都存储到EventRow对象的“ photoArray”数组中。
现在,我要计算“ imageArray”的总数。 但是在通过EventRow的对象访问它时遇到了问题。
有什么建议么 ?
谢谢..
如果我理解正确的话,你的photoArray
在变量EventRow
类包含PhotoRow
对象。 您可以像这样在PhotoRow
的imageArray
变量中计算对象:
int someIndex = 0;
[((PhotoRow*)[myEventRow.photoArray objectAtIndex:someIndex]).imageArray count];
要访问photoArray中的单个对象(eventRow是EventRow的一个实例
[[eventRow photoArray] objectAtIndex: someIndex]; // I don't like dot notation!
要么
[eventRow.photoArray objectAtIndex: someIndex];
访问imageArray
[[[eventRow photoArray] objectAtIndex: someIndex] imageArray];
要么
[eventRow.photoArray objectAtIndex: someIndex].imageArray;
获取该imageArray的图像计数
[[[[eventRow photoArray] objectAtIndex: someIndex] imageArray] count];
要么
[eventRow.photoArray objectAtIndex: someIndex].imageArray.count;
如果要计算所有图像,则需要循环,但可以使用快速枚举来简化操作
size_t total = 0;
for (PhotoRow* photoRow in [eventRow photoArray])
{
total += [[photoRow imageArray] count];
}
但是,我希望您重新考虑一下您的设计。 在每个类中对NSMutableArray的公开都破坏了封装。 一旦调用者获得了数组,它就可以在对象不知道的情况下修改PhotoRow或EventRow的内部状态。 最好不要具有NSMutableArray属性,而要添加方法分别将图像和photoRows直接分别添加到PhotoRows和EventRows。 因此,例如,您的photoRow类可能具有以下方法:
-(size_t) imageCount; // returns the result of sending -count to the internal array
-(NSImage*) imageAtIndex: (size_t) index; // returns the result of sending -objectAtIndex: to the underlying array
-(void) addImage: (NSImage*) newImage;
// etc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.