我对此做了一些研究,但唉,没有答案。我制作了一个使用ASCII码的代码机器。没有错误或警告。但是当我运行它时,我得到这个错误:线程1:信号SIGBART。我认为它与UITextView“编码”有关,但我不确定。编辑:当我点击“编码”按钮((IBAction)StartEncodeDecode)发生崩溃。线程1信号SIGBART
全部输出记录如下。不能相信我是这样一个新手:
2013-08-28 14:00:57.086 Code Machine[2285:11303] -[CMViewController decodeEncode:]: unrecognized selector sent to instance 0x7151190 2013-08-28 14:00:57.155 Code Machine[2285:11303] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CMViewController decodeEncode:]: unrecognized selector sent to instance 0x7151190' * First throw call stack: (0x1c94012 0x10d1e7e 0x1d1f4bd 0x1c83bbc 0x1c8394e 0x10e5705 0x192c0 0x19258 0xda021 0xda57f 0xd96e8 0x48cef 0x48f02 0x26d4a 0x18698 0x1befdf9 0x1befad0 0x1c09bf5 0x1c09962 0x1c3abb6 0x1c39f44 0x1c39e1b 0x1bee7e3 0x1bee668 0x15ffc 0x1ded 0x1d15) libc++abi.dylib: terminate called throwing an exception (lldb)
结束编辑。
代码如下:
查看Controller.m或者:
#import "CMViewController.h"
#import "CMAEncode.h"
@interface CMViewController()
@property (weak, nonatomic) IBOutlet UITextView *toCode;
@property (weak, nonatomic) IBOutlet UITextView *coded; //I think the problem is with this text view.
@property (weak, nonatomic) IBOutlet UISwitch *onOrOff;
- (IBAction)StartEncodeDecode:(id)sender;
@end
@implementation CMViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
{
if ([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
// Return FALSE so that the final '\n' character doesn't get added
return NO;
}
// For any other character return TRUE so that the text gets added to the view
return YES;
}
- (IBAction)StartEncodeDecode:(id)sender {
NSString *finishedText;
NSString *toCode = self.toCode.text;
if (self.onOrOff.on == FALSE) {
finishedText = [CMAEncode encodeText:toCode];
self.coded.text = finishedText;
} else {
}
}
@end
CMAEncode.m
#import "CMAEncode.h"
@implementation CMAEncode : NSObject
+ (NSString *) encodeText:(NSString *)text {
NSString *ToEncode = text;
NSMutableString *Encoded = [NSMutableString string];
int letter;
NSUInteger i = 0;
while (i < ([ToEncode length] - 1)) {
letter = [ToEncode characterAtIndex:i];
NSString *toAppend = [NSString stringWithFormat:@"%d|", letter];
[Encoded appendString:toAppend];
i = i + 1;
}
return Encoded;
}
@end
这里就是错误实际发生的类。这是电话main.m:
#import <UIKit/UIKit.h>
#import "CMAppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([CMAppDelegate class])); //This is where the error occurred.
}
}
感谢您的帮助!
什么是链接到'StartEncodeDecode:''IBAction'?它是一个按钮或其他东西? – Amar
这是一个按钮。 – DonyorM
只需断开所有连接并再次连接。 – Rajneesh071