我有一个对象,它将属性定义为NSURL
@interface fcpElement : NSObject
@property (copy) NSString* elementName;
@property (copy) NSURL* elementPath;
@property (copy) NSURL* elementParent;
@property () BOOL elementIsHidden;
@property (copy) NSString* elementType;
-(id)initWithName : (NSString*) elementName path: (NSURL*) elementPath parent: (NSURL*) elementParent hiddenValue: (BOOL) elementIsHidden type: (NSString*) elementType;
@end在我的应用程序控制器中,我创建了一个NSMutableArray,并使用我的init…方法用我的对象填充它。然后我有一个按钮,它调用应用程序控制器上的一个方法,该方法通过从数组中的对象调用实例变量来创建一个新的NSURL,如下所示:
for(currentElement in _finalCutData) {
NSURL *currentElementPath = [currentElement elementPath];最后,我想要做一个比较,看看这个新的URL是否等于另一个URL,但如果我执行以下操作,我总是得到停止我的程序的错误:
NSURL *currentElementPathAbsolute = [currentElementPath absoluteURL];错误:-__NSCFString absoluteURL:无法识别的选择器已发送到实例
如果我添加一个断点,它会告诉你currentElementPath是一个无效的指针。但是如果我NSLog [currentElement elementPath],我会得到其中包含的URL。
如何从我的实例变量中获取URL,以便可以使用它?我是否在属性声明中使用了错误的参数类型?或者是其他原因?
发布于 2013-07-21 06:13:47
您的问题很可能是此调用:
[currentElement elementPath];返回的是字符串,而不是URL。-elementPath是如何实现的?你有没有看到任何编译器警告?
我假设-elementPath被实现为一个简单的getter方法(可能是一个@property)。在这种情况下,错误存在于最初存储该值的代码中。
您使用的是ARC还是手动内存管理?如果是后者,那么这里也有可能是僵尸。您没有保留URL,因此它将被释放,稍后将其替换为一个字符串。
发布于 2013-07-21 02:26:47
我很惊讶我似乎可以在这个论坛上提供帮助,因为我是一个初学者,但是NSURL类有你应该使用的初始化方法,比如initFileURLWithPath:你可能不应该覆盖NSURL初始化方法。
https://stackoverflow.com/questions/17764987
复制相似问题