Objective c 选择器'的类方法未知;以…和#x27;
我发现了类似的问题,但我无法解决我的错误。我的错误是: 选择器“initWithUrl:sub:cont:cat:dat”没有已知的类方法 我试过了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
@synthesis
而不是self.variableName
\u variableName
- 添加
[[MyClass init]alloc]
- 将
更改为-
+
#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…'的方法定义”。是这样吗?