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 我已经在自定义class.h文件中声明了我的实例方法,但仍然找不到该方法_Ios_Objective C_Xcode - Fatal编程技术网

Ios 我已经在自定义class.h文件中声明了我的实例方法,但仍然找不到该方法

Ios 我已经在自定义class.h文件中声明了我的实例方法,但仍然找不到该方法,ios,objective-c,xcode,Ios,Objective C,Xcode,使用xCode 6.1.1,目标C 我是Objective C的初学者,现在正在尝试将一些其他方法扩展到现有的iOS4应用程序项目 在我实现了新方法并由我的ViewController_2调用它之后,它工作起来很奇怪:调用了该方法,但它没有收到参数。但是,如果我在现有的ViewController中调用相同的方法,它就可以正常工作 有人能告诉我我的课有什么问题吗 这是我的密码: //我的自定义类 AnimationObjectContainer.h #import <Foundation/

使用xCode 6.1.1,目标C

我是Objective C的初学者,现在正在尝试将一些其他方法扩展到现有的iOS4应用程序项目

在我实现了新方法并由我的ViewController_2调用它之后,它工作起来很奇怪:调用了该方法,但它没有收到参数。但是,如果我在现有的ViewController中调用相同的方法,它就可以正常工作

有人能告诉我我的课有什么问题吗

这是我的密码:

//我的自定义类
AnimationObjectContainer.h

#import <Foundation/Foundation.h>
@interface AnimationObjectContainer : NSObject
...
- (void)flashImagesForSecs:(CGFloat)seconds;
...
@end
//现有项目视图控制器
ViewController.m

AnimationObjectContainer *container = [[AnimationObjectContainer alloc] init];
[container flashImagesForSecs:30];   // Succeed.
//我的自定义ViewController,继承的ViewController.h
ViewController_2.h

#import <UIKit/UIKit.h>
#import "ViewController.h"

@interface ViewController_2 : ViewController <UIGestureRecognizerDelegate>
...
@end
我自己回答

我检查并修改了这些东西,然后它就工作了。但警告信息仍然存在。我不知道如何摆脱它

  • 按断点检查
    传递给方法的参数变为奇异值
  • self=(AnimationObjectContainer*)0x16657c30
    秒=(CGFloat)0.000000000000000000000000420389539

  • 所以我尝试将参数类型更改为int,然后它就可以工作了
  • self=(AnimationObjectContainer*)0x15e69940
    秒=(整数)30

    我不确定这里发生了什么,但它确实起了作用。

    不过,警告消息“未找到实例方法”仍然存在。

    您需要在ViewController_2.m文件中导入“AnimationObjectContainer.h”。每个.m文件都是单独编译的,编译器只在每个.m文件中看到您导入的内容。谢谢您的评论!但是我已经在ViewController_2.m中导入了“AnimationObjectContainer.h”,问题仍然存在。更新了代码。在任何情况下,
    ViewController_2.m
    的编译器都没有看到您对
    -flashimagesforecs:
    的方法声明(或者您在方法名称中有一个输入错误)。一个常见的问题是循环进口。追溯ViewController2.m导入的所有.h文件,并查找循环.h导入。使用前向类声明来最小化.h文件中的
    #导入
    #在
    @implementation
    部分之前导入,而不是在其内部。您好,matt。谢谢提醒!我更正了ViewController_2.m文件,但问题仍然存在。。。谢谢你,达伦。我将检查循环问题。这是因为文本30在默认情况下是int,您应该使用30.0来获得浮点文本
    #import <UIKit/UIKit.h>
    #import "ViewController.h"
    
    @interface ViewController_2 : ViewController <UIGestureRecognizerDelegate>
    ...
    @end
    
    #import "ViewController_2.h"
    #import "AnimationObjectContainer.h"
    @implementation ViewController_2
    ...
    AnimationObjectContainer *container = [[AnimationObjectContainer alloc] init];
    // Warning displayed here: Instance method '-flashImagesForSecs:' not found(return type defaults to 'id')
    [container flashImagesForSecs:30];   // Succeed but output: 2015-02-09 10:28:28.959 Fomm Panel[2728:1765749] flashImagesForSecs: is called. seconds = 0.000000
    ...
    @end