错误“自定义框架中没有选择器'Hello:'”的已知类方法

时间:2023-01-15 18:51:32

I am making a framework for a company and I have completed all the code. I'm now trying to package it into a framework. As a test I made a method with this name: -(void)Hello:(NSString *)worldText;

我正在为一家公司制作一个框架,我已经完成了所有代码。我现在正试图将它打包成一个框架。作为测试我用这个名字做了一个方法: - (void)Hello:(NSString *)worldText;

When I try to call it in the application with the framework using this code [CompanyMobile Hello:@"World"];, I'm getting a compiler error which says

当我尝试使用此代码[CompanyMobile Hello:@“World”];在框架的应用程序中调用它时,我收到编译器错误

No known class method for selector 'Hello:'

没有已知的选择器'Hello:'的类方法

The .m in my framework is as follows:

我框架中的.m如下:

#import "Hello.h"

@implementation Hello

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }

    return self;
}

-(void)Hello:(NSString *)world {

}

@end

The .h in my framework is as follows:

我框架中的.h如下:

#import <Foundation/Foundation.h>

@interface Hello : NSObject
-(void)Hello:(NSString *)world;
@end

The .h in my application

我的申请中的.h

//
//  FMWK_TESTViewController.h
//  FMWK TEST
//
//  Created by Sam on 6/15/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <companyMobile/Hello.h>
@interface FMWK_TESTViewController : UIViewController

@end

The .m in my application

我的应用程序中的.m

//
//  FMWK_TESTViewController.m
//  FMWK TEST
//
//  Created by Sam Baumgarten on 6/15/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "FMWK_TESTViewController.h"

@implementation FMWK_TESTViewController

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [Badgeville Hello:@"Sam"];
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return YES;
}

@end

2 个解决方案

#1


44  

You defined Hello: as an instance method, but you're sending Hello: to the class. To define a class method, you write + (void)Hello: rather than - (void)Hello:.

您定义了Hello:作为实例方法,但是您正在向类发送Hello :.要定义类方法,可以编写+(void)Hello:而不是 - (void)Hello:。

#2


10  

please refer to : https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html

请参阅:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html

to answer your question, change

回答你的问题,改变

@interface Hello : NSObject
-(void)Hello:(NSString *)world;
@end 

to

@interface CompanyMobile : NSObject{
}
+(void)Hello:(NSString *)world;
@end

and call the method [CompanyMobile Hello:@"world"];

并调用方法[CompanyMobile Hello:@“world”];

#1


44  

You defined Hello: as an instance method, but you're sending Hello: to the class. To define a class method, you write + (void)Hello: rather than - (void)Hello:.

您定义了Hello:作为实例方法,但是您正在向类发送Hello :.要定义类方法,可以编写+(void)Hello:而不是 - (void)Hello:。

#2


10  

please refer to : https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html

请参阅:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html

to answer your question, change

回答你的问题,改变

@interface Hello : NSObject
-(void)Hello:(NSString *)world;
@end 

to

@interface CompanyMobile : NSObject{
}
+(void)Hello:(NSString *)world;
@end

and call the method [CompanyMobile Hello:@"world"];

并调用方法[CompanyMobile Hello:@“world”];