我写了一个简单的ios5应用程序(包括垃圾收集器),它只有一个视图和一个UITextField
我需要分析这个UITextField
中的输入文本
这是我的代码。
头文件:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UITextFieldDelegate>
{
IBOutlet UITextField *myTextField;
}
@property (nonatomic, retain) IBOutlet UITextField *myTextField;
-(IBAction)editingChanged:(UITextField *)sender;
发送事件编辑时跟踪的 editingChanged:
已更改,因此此方法会在每次用户更改UITextField
实施文件的一部分:
#pragma mark - textField
-(NSString *)stringWithoutAbc:(NSString *)sourceString
{
NSString *resultString=[sourceString stringByReplacingOccurrencesOfString:@"abc:" withString:@""];
if (![resultString isEqualToString:sourceString])
{
NSLog(@" sourceString: %@", sourceString);
NSLog(@" resultString: %@", resultString);
};
return resultString;
}
-(IBAction)editingChanged:(UITextField *)sender
{
NSLog(@"editing Changed. text: %@", sender.text);
//removing "abc:" from string in text field
NSString *str=[self stringWithoutAbc:sender.text];
//if something was removed - changing text in text field
if (![str isEqualToString:sender.text])
{
sender.text=str;
};
}
每次用户更改UITextField
中的文字时,我们都会使用标准NSString
方法从此文本中删除“abc:”字符串。
问题是:应用程序不稳定。当“abc:”被删除时,它有时会崩溃。 请帮帮我。如何解决这个问题?
答案 0 :(得分:4)
您可以使用以下textField
的委托方法: -
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
答案 1 :(得分:1)
如果您使用的是Arc,则不必保留该对象。顺便说一句,ARC不是垃圾收集器。 http://longweekendmobile.com/2011/09/07/objc-automatic-reference-counting-in-xcode-explained/ MAybe,因为你在textField上使用了retain。