如果有其他人在寻找解决方案,我希望这个会有所帮助。
我已经使用 MWPhotoBrowser 很长时间了。以前,在他们的 .h 文件中,我们可以获取 photoUrl。现在他们移动到 .m 并且我们无法在外部访问该属性。
由于我使用的是 cocoapods 中的那个库,我也不想修改他们的代码。所以,我创建了这样的类别。我将在 MWPhoto 中单独分配 photoUrl。
在 MWPhoto+Property.h 中,
#import <MWPhotoBrowser/MWPhotoBrowser.h>
@interface MWPhoto (Property)
@property (nonatomic, strong) NSURL *photoUrl;
@end
在 MWPhoto+Property.m 中,
#import "MWPhoto+Property.h"
#import <objc/runtime.h>
@implementation MWPhoto (Property)
static char UIB_PROPERTY_PHOTOURL;
@dynamic photoUrl;
- (void)setPhotoUrl:(NSURL *)photoUrl {
objc_setAssociatedObject(self, &UIB_PROPERTY_PHOTOURL, photoUrl, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (NSURL *)photoUrl {
return (NSURL *)objc_getAssociatedObject(self, &UIB_PROPERTY_PHOTOURL);
}
@end
然后,当我初始化 MWPhoto 时,我也输入了 photoUrl。
NSURL *photoUrl = [NSURL URLWithString:messageData.dataDict[@"image"]];
MWPhoto* photo = [MWPhoto photoWithURL:photoUrl];
photo.photoUrl = photoUrl; //Due to new implementation in MWPhotoBrowser, property of photoUrl is hidden. So, i put in category
[self.photos addObject: photo];
//Later, you can access photo.photoUrl in other places.