initWithFrame не работает над моим проектом в IOS 5, но работает в IOS 4 - PullRequest
0 голосов
/ 26 января 2012

Я сделал программу из учебника в iOS 4, которая была флажок. У меня был друг, который начинает программировать в xcode для iphone. Итак, я дал ему свои коды, чтобы он мог начать. Оказывается, он пытался сделать код сам в ios5, следуя коду, который я сделал для IOS4. Он продолжал говорить мне, что он не работает и что он получил кучу ошибок, некоторые из которых следующие. Поэтому я открывал свой код и запускал его на своем обновленном xcode, и он работал нормально, без проблем, что когда-либо. Самое смешное было, когда я добрался до его дома, посмотрел код и поиграл с ним. Он был прав. Попытка сделать код из нового проекта в новом xcode с новым ios, проект выдаст все виды ошибок. Я разместил некоторые в нижней части.

Итак, мой вопрос такой ... почему так? это связано с тем, как ios5 использует ARC и другие свойства?

  • NSObject может не отвечать на initWithFrame
  • Метод экземпляра - setImageForState не найден (тип возвращаемого значения по умолчанию равен "id")
  • метод экземпляра - addTarget: action: forControlEvents не найден (тип возвращаемого значения по умолчанию для id)
  • MicheckBox может не отвечать на initWithFrame и еще немного

мой код выглядит следующим образом должен png один называется checkbox_ticked.png и checkbox_not_ticked.png

micheckbox.h

#import <UIKit/UIKit.h>
@interface MICheckBox : UIButton 
{
BOOL isChecked;
}
@property (nonatomic,assign) BOOL isChecked;
-(IBAction) checkBoxClicked;
@end

micheckbox.m

#import "MICheckBox.h"
@implementation MICheckBox
@synthesize isChecked;
- (id)initWithFrame:(CGRect)frame 
{
    if (self = [super initWithFrame:frame]) 
    {
    [self setImage:[UIImage imageNamed:@"checkbox_not_ticked.png"] forState:UIControlStateNormal];
[self 
addTarget:self action:@selector(checkBoxClicked)forControlEvents:UIControlEventTouchUpInside];
    }
    return self;
}
-(IBAction) checkBoxClicked
{
if(self.isChecked ==NO)
    {
    self.isChecked =YES;
    [self setImage:[UIImage imageNamed:@"checkbox_ticked.png"] forState:UIControlStateNormal];

    }
    else
        {
            self.isChecked =NO;
        [self setImage:[UIImage  imageNamed:@"checkbox_not_ticked.png"]forState:UIControlStateNormal];
        }
}
- (void)dealloc 
{
    [super dealloc];
}
@end

MICheckBoxAppDelegate.h

#import <UIKit/UIKit.h>
@interface MICheckBoxAppDelegate : NSObject <UIApplicationDelegate> 
{
    UIWindow *window;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@end

MICheckBoxAppDelegate.m

#import "MICheckBoxAppDelegate.h"
#import "MICheckBox.h"
@implementation MICheckBoxAppDelegate
@synthesize window;
- (void)applicationDidFinishLaunching:(UIApplication *)application 
{    
    // Override point for customization after application launch
    MICheckBox *checkBox =[[MICheckBox alloc]initWithFrame:CGRectMake(5, 80, 150, 30)];
    [checkBox setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [checkBox setTitle:@"Checkbox" forState:UIControlStateNormal];
    [window addSubview:checkBox];
    [window makeKeyAndVisible];
}
- (void)dealloc 
{
    [window release];
    [super dealloc];
}
@end

1 Ответ

0 голосов
/ 26 января 2012

Я думаю, что вы забыли "вернуть себя" в initWithFrame класса MICheckBox.

...