当我启动我的应用程序时,在尝试做某事时,它会在几秒后崩溃。我有警告的警告:“downloadTextViewCntroller的错误实现。我也有”方法定义 - 找不到-timerFinished和“找不到-timerFinished的方法定义”这是我的.m请帮助我。 .h也是最底层的
//
// downloadTextViewController.m
// downloadText
//
// Created by Declan Scott on 18/03/10.
// Copyright __MyCompanyName__ 2010. All rights reserved.
//
#import "downloadTextViewController.h"
@implementation downloadTextViewController
@synthesize start;
-(IBAction)tapit {
start.hidden = YES;
}
-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
if (fabsf(acceleration.x) > 2.0 || fabsf(acceleration.y) >2.0 || fabsf(acceleration.z) > 2.0) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"This app was developed by Declan Scott and demonstrates NSURLConnection and NSMutableData"
delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
}
}
- (NSString *) saveFilePath
{
NSArray *pathArray =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return [[pathArray objectAtIndex:0] stringByAppendingPathComponent:@"savedddata.plist"];
}
- (void)applicationWillTerminate:(UIApplication *)application {
NSArray *values = [[NSArray alloc] initWithObjects:textView.text,nil];
[values writeToFile:[self saveFilePath] atomically:YES];
[values release];
}
- (void)viewDidLoad {
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
accelerometer.delegate = self;
accelerometer.updateInterval = 1.0f/60.0f;
NSString *myPath = [self saveFilePath];
NSLog(myPath);
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:myPath];
if (fileExists)
{
NSArray *values = [[NSArray alloc] initWithContentsOfFile:myPath];
textView.text = [values objectAtIndex:0];
[values release];
}
// notification
UIApplication *myApp = [UIApplication sharedApplication];
// add yourself to the dispatch table
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillTerminate:)
name:UIApplicationWillTerminateNotification
object:myApp];
[super viewDidLoad];
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (IBAction)fetchData {
loadingAlert = [[UIAlertView alloc] initWithTitle:@"Loading…\n\n\n\n" message:nil
delegate:self cancelButtonTitle:@"Cancel Timer" otherButtonTitles:nil];
[loadingAlert show];
UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityView.frame = CGRectMake(139.0f-18.0f, 60.0f, 37.0f, 37.0f);
[loadingAlert addSubview:activityView];
[activityView startAnimating];
timer = [NSTimer scheduledTimerWithTimeInterval:10.0f target:self selector:@selector(timerFinished) userInfo:nil repeats:NO];
NSURLRequest *downloadRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://simpsonatyapps.com/exampletext.txt"]
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:1.0];
NSURLConnection *downloadConnection = [[NSURLConnection alloc] initWithRequest:downloadRequest delegate:self];
if (downloadConnection)
downloadedData = [[NSMutableData data] retain];
else {
// Error
}
}
- (void)connection:(NSURLConnection *)downloadConnection didReceiveData:(NSData *)data {
[downloadedData appendData:data];
NSString *file = [[NSString alloc] initWithData:downloadedData encoding:NSUTF8StringEncoding];
textView.text = file;
// get rid of alert
[loadingAlert dismissWithClickedButtonIndex:-1 animated:YES];
[loadingAlert release];
/// add badge
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse {
return nil;
}
@end
//
// downloadTextViewController.h
// downloadText
//
// Created by Declan Scott on 18/03/10.
// Copyright __MyCompanyName__ 2010. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface downloadTextViewController : UIViewController {
IBOutlet UITextView *textView;
NSMutableData *downloadedData;
UIAlertView *loadingAlert;
NSTimer *timer;
IBOutlet UIButton *start;
}
- (IBAction)fetchData;
- (IBAction)tapIt;
- (void)timerFinished;
@property (nonatomic, retain) UIButton *start;
@end
答案 0 :(得分:2)
您尚未实现标头中声明的-timerFinished
方法。除了在头文件中声明它之外,你需要提供它的实现,即使它是空的。
你的应用程序崩溃了,因为计时器在10秒后触发,但找不到它试图调用的方法。
答案 1 :(得分:0)
对于一个,你没有任何关于timerFinished的东西,这就是你得到那个警告的原因,但是现在你可以忽略它,直到你在代码中实现它。你启动一个计时器并让它做一些它不能做的事情,因为你没有适当的代码。
要解决此问题,只需将以下内容放入.m
即可-(void)timerFinished
{
}