Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 应用程序崩溃,无法识别的选择器发送到实例-可能重复_Ios_Objective C - Fatal编程技术网

Ios 应用程序崩溃,无法识别的选择器发送到实例-可能重复

Ios 应用程序崩溃,无法识别的选择器发送到实例-可能重复,ios,objective-c,Ios,Objective C,我知道有人问过这个问题,但我看到的答案对我都没有帮助。如果你认为我错过了一个可能有用的,请告诉我。我看到了视图控制器没有试图设置的变量的其他示例,但我的情况并非如此 我在一段时间内遇到这个错误: -[EditPropertyViewController setLawnNumber:]: unrecognized selector sent to instance 0x19a301e0 每当我在prepareForSegue内点击此if块时: if( [segue.identifier isEq

我知道有人问过这个问题,但我看到的答案对我都没有帮助。如果你认为我错过了一个可能有用的,请告诉我。我看到了视图控制器没有试图设置的变量的其他示例,但我的情况并非如此

我在一段时间内遇到这个错误:

-[EditPropertyViewController setLawnNumber:]: unrecognized selector sent to instance 0x19a301e0
每当我在prepareForSegue内点击此if块时:

if( [segue.identifier isEqual:@"editProperty"])
{
    EditPropertyViewController *destView = segue.destinationViewController;
    destView.lawnNumber = _lawnNumber;
    destView.latitude = _latitude;
    destView.longitude = _longitude;
    destView.address = _serviceAddressLabel.text;

}
我在.m文件的顶部有#import“EditPropertyViewController.h”。我有一个标识符为“editProperty”的segue,它推送一个设置为EditPropertyViewController类型的视图控件

以下是EditPropertyViewController.h,显示我有我试图设置的变量:

#import <UIKit/UIKit.h>
#import <GoogleMaps/GoogleMaps.h>

@interface EditPropertyViewController : UIViewController
@property (nonatomic, strong) GMSMapView *mapView;
@property (nonatomic, strong) GMSCameraPosition *camera;
@property(strong, nonatomic) NSString *address;
@property (nonatomic) CLLocationDegrees latitude;
@property (nonatomic) CLLocationDegrees longitude;
@property (nonatomic) int lawnNumber;

@end
这导致了以下输出:

    2015-02-27 16:56:27.623 LawnGuru[2730:460942] Actual class is EditPropertyViewController 
Assertion failed: ([destView class] == NSStringFromClass([destView class]))

从故事板复制/粘贴,这是我试图转换到的VC类型:“EditPropertyViewController”,这是我正在访问的.h文件:#导入“EditPropertyViewController.h”

几乎可以肯定您的
dest
视图控制器不是您想象的那样。试试这个:

EditPropertyViewController *destView = segue.destinationViewController;
NSLog(@"Actual class is %@", NSStringFromClass([destView class]));

if ( [destView class] == [EditPropertyViewController class] )
    NSLog(@"Class is good, responds to selector=%d", [destView respondsToSelector:@selector(setLawnNumber:)] );
}

有时,从我在其他问题中看到的情况来看,Xcode似乎遇到了问题,解决这种情况的唯一方法是删除据称有问题的代码并重新添加它。尝试删除lawnNumber属性,然后重新执行此操作。

是否在EditPropertyViewController.m中为lawnNumber属性使用@synthesis?如果是的话,请出示。我不是。我在整个项目中没有使用@synthesis。事实上,我在EditPropertyViewController.m上唯一更改的是添加(iAction)PrepareForRunWindEditProperty:(UIStoryboardSegue*)segue{},它是空的,这样我就可以在未来的视图控制器上点击“展开”按钮返回它。其他内容都没有被触及。@JakeT:直接打开头文件,检查属性是否存在(我的意思是不按定义跳转打开)XCode是否崩溃?我很难理解您是如何看到lldb错误消息的,除非是您的程序崩溃了。您可以尝试删除editPropertyViewController中的lawnNumber属性,然后重新制作,只是为了确保Xcode中没有发生错误。我看不出您的代码有任何错误。在尝试设置值之前添加最后两行,我得到以下输出:2015-02-27 16:56:27.623 LawnGuru[2730:460942]实际类是EditPropertyViewController断言失败:([destView类]==NSStringFromClass([destView类])。我将用这些信息更新我的问题。从故事板复制/粘贴,这是我试图转换到的VC类型:“EditPropertyViewController”,这是我正在访问的.h文件:#导入断言没有意义的“EditPropertyViewController.h”。类对象指针永远不会等于sting指针。assert()不正确-我更改了这段代码。现在重试-查看选择器是否响应所述内容@HotLicks right-尝试在这些答案中键入代码更加困难,因为这样更改了编辑器…respondsToSelector上的测试将使用未定义该属性的旧.o拾取Xcode错误。@DavidH if语句通过true。其他人在评论中建议只删除属性并重写它们。我曾尝试重新排列我在源VC中设置属性的顺序,以查看是该属性还是dest VC有问题,任何顺序都会在我尝试设置的第一个属性上抛出错误。我只删除了lawnNumber属性,并将其完全重写(据我所知),整个segue工作正常。知道为什么重写一个属性可以修复所有属性吗?可能是类没有正确编译。Xcode进行大量缓存。你会得到一个“响应选择器”的成功,但在实际调用它时却失败了,这是令人困惑的。通常,当奇怪的事情发生时,最好的办法是删除派生文件夹并从头开始构建。我很少觉得这是必要的,但当然有时是必要的。这里失败的正常原因正如我所说的-控制器的类不是您所认为的!Swift将帮助人们更早地发现这类问题。尽管我首先设置的属性都有错误,但重写lawnNumber修复了整个问题。谢谢
EditPropertyViewController *destView = segue.destinationViewController;
NSLog(@"Actual class is %@", NSStringFromClass([destView class]));

if ( [destView class] == [EditPropertyViewController class] )
    NSLog(@"Class is good, responds to selector=%d", [destView respondsToSelector:@selector(setLawnNumber:)] );
}