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
Objective c 选择器'的类方法未知;以…和#x27;_Objective C - Fatal编程技术网

Objective c 选择器'的类方法未知;以…和#x27;

Objective c 选择器'的类方法未知;以…和#x27;,objective-c,Objective C,我发现了类似的问题,但我无法解决我的错误。我的错误是: 选择器“initWithUrl:sub:cont:cat:dat”没有已知的类方法 我试过了 @synthesis self.variableName而不是\u variableName 添加[[MyClass init]alloc] 将-更改为+ 我怎样才能修好它 MyClass.h: #import <Foundation/Foundation.h> @interface MyClass : NSObject -(i

我发现了类似的问题,但我无法解决我的错误。我的错误是:

选择器“initWithUrl:sub:cont:cat:dat”没有已知的类方法

我试过了

  • @synthesis
  • self.variableName
    而不是
    \u variableName
  • 添加
    [[MyClass init]alloc]
  • -
    更改为
    +
我怎样才能修好它

MyClass.h:

#import <Foundation/Foundation.h>

@interface MyClass : NSObject

-(id)init;
-(id)initWithURL:(NSURL *)url_ sub:(NSString *)subject_ cont:(NSString *)content_ cat:(NSString *)category_ dat:(NSString *)date_;

@property NSURL *bannerImageURL;
@property NSString *subject;
@property NSString *content;
@property NSString *category;
@property NSString *date;

@end
myViewController.m:

#import "myViewController.h"
#import "MyClass.h"

@implementation SimpleTableViewController

MyClass *news1;

- (void)viewDidLoad {
    [super viewDidLoad];
    NSURL *aUrl = [NSURL URLWithString:@"aUrl"];

    // Error occurs here.
    news1 = [MyClass initWithURL:aUrl sub:@"aSub" cont:@"aCont" cat:@"aCat" dat:@"aDat"];
}
我想你的意思是:

news1 = [[MyClass alloc] initWithURL:aUrl sub:@"aSub" cont:@"aCont" cat:@"aCat" dat:@"aDat"];
这是Objective-C中的标准模式:调用
[SomeClass alloc]
创建一个新实例,然后立即对其调用一些初始化方法。初始值设定项是必须在类的实例上调用的实例方法,而
alloc
是在类本身上调用的类方法(并返回该类的新分配实例)。

我想您的意思是:

news1 = [[MyClass alloc] initWithURL:aUrl sub:@"aSub" cont:@"aCont" cat:@"aCat" dat:@"aDat"];

这是Objective-C中的标准模式:调用
[SomeClass alloc]
创建一个新实例,然后立即对其调用一些初始化方法。初始值设定项是必须在类的实例上调用的实例方法,而
alloc
是在类本身上调用的类方法(并返回该类的新分配实例)。

将-更改为加号以在类标题中创建类方法。ie+(id)initWithURL等。否则,您需要调用一个常规分配器,然后调用实例上的初始值设定项。@johnelemans我刚才在MyClass.h文件中将-改为+。然后我得到一个警告“找不到'initWithURL…'的方法定义”。是否正确?将-更改为加号以在类标题中创建类方法。ie+(id)initWithURL等。否则,您需要调用一个常规分配器,然后调用实例上的初始值设定项。@johnelemans我刚才在MyClass.h文件中将-改为+。然后我得到一个警告“找不到'initWithURL…'的方法定义”。是这样吗?