0

コードをより管理しやすくするためにリファクタリングしています。他のクラスにロードできる関数を含むクラスを作成したいと考えています。

関数というクラスを作成し、funtions.h を ViewController クラスの .h にインポートし、関数 .m を ViewController.m にインポートしましたが、呼び出されてクラッシュしたときにコンパイラが hasInternetconnection メソッドを認識しません。

このクラスでこのメソッドを呼び出せない理由について、完全に迷っているわけではありません

これが私のコードです。s/o と google をよく調べましたが、何が間違っているのかまだわかりません

関数.h

#import <Foundation/Foundation.h>

@interface Functions : NSObject


-(BOOL)hasInternetConection;
@end

関数.m

#import "Functions.h"

@implementation Functions



-(BOOL)hasInternetConection{
    NSURL *url=[NSURL URLWithString:@"www.google.com"];
    NSURLRequest *req=[NSMutableURLRequest requestWithURL:url];
    NSHTTPURLResponse *res=nil;
    [NSURLConnection sendSynchronousRequest:req returningResponse:&res error:NULL];
    if (res!=nil) {
        return NO;
    }else{
        return YES;}

}

@end

HomeViewController.h

...
#import <QuartzCore/QuartzCore.h>
#import "multiShotViewController.h"
#import "Functions.h"
...

@interface HomeViewController : UIViewController {

UIGlossyButton *b;

HomeViewController.m

...
#import "detailsViewController.h"
#import "Functions.h"
#define  Kwelome @"welcomeread"


@interface HomeViewController ()

@end

@class Functions;
@implementation HomeViewController
@synthesize tripName;
@synthesize databasePath, deathtrail;
@synthesize lampingbtn,deerstalkingbtn,boundarybtn, optionsbtn,shootingbtn;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        self.navigationItem.title = @"Home";
        UIColor *backg=[[UIColor alloc]initWithPatternImage:[UIImage imageNamed:@"bgcamo.png"]];
        self.view.backgroundColor=backg;
        [backg release];
    }
    return self;
}
...
4

1 に答える 1

1

@class 関数だと思います。少なくとも必要ありません。既にヘッダー ファイルをインポートしているため、再宣言する必要はありません。

これらのメソッドをどこで呼び出していますか? そのクラスのインスタンスでそれらを呼び出してもよろしいですか?

私はあなたがやろうとしている問題を疑っています

[Functions hasInternetConection]

それ以外の

Functions * func = [[Functions alloc] init];
[func hasInternetConection];
[func release];

関数の宣言を「-」ではなく「+」に変更するよりも最初の例のようにすると、静的メソッドとして使用できます。

于 2013-09-10T22:45:15.140 に答える