2012-01-26 5 views
0

Ios 4 자습서에서 확인란을 만든 프로그램을 만들었습니다. 나는 아이폰 용 xcode 프로그램을 시작한 친구가 있었다. 그래서, 나는 그가 시작할 수 있도록 그에게 나의 암호를 주었다. 그가 IOS4 용으로 작성한 코드에 따라 ios5에서 코드를 직접 작성하려고했습니다. 그는 자신이 일하지 않고 다음과 같이 몇 가지 오류가 있다는 것을 계속해서 알려주었습니다. 그래서 나는 내 코드를 열어 내 업데이트 된 xcode에서 실행하고 괜찮 았는데 아무런 문제도 없었다. 재미있는 점은 내가 그의 집에 도착했을 때 코드를보고 그 코드를 가지고 놀았습니다. 그는 옳았다. 새 iOS로 새 xcode의 새 프로젝트에서 코드를 작성하려고하면 프로젝트에서 모든 종류의 오류가 발생합니다. 나는 바닥에 몇 가지를 올렸다.initWithFrame IOS 5 내 프로젝트에서 작동하지 않지만 IOS 4 않았다

제 질문은 이것입니다 ... 왜 이까요? ios5가 ARC 및 다른 속성을 사용하는 방식과 관련이 있습니까?

  • NSObject의이
  • 인스턴스 방법을 initWithFrame에 응답하지 않을 수 있습니다 - setImageForState를 찾을 수 없습니다 (반환 형식 기본값으로 "ID")
  • 인스턴스 메소드 - addTarget을 : 조치 : forControlEvents를 찾을 수 없습니다 (ID를 반환 형식의 기본값) 하나라고 checkbox_ticke를 PNG로 가지고 다음과 같이
  • MicheckBox는 initWithFrame 에 응답하지 않을 수 있습니다 좀 더

내 코드입니다 d.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 
+0

이것은 Xcode가 오류가있는 wonko로가는 시간 중 하나와 같습니다. 일반적으로'Show issue navigator' 또는 Command-4를보고 목록 맨 위에있는 오류 (빨간색)를보고 싶습니다. 또한 가져 오기에서 철자 오류를 확인하십시오.이 오류는 "MICheckBox.h"헤더가 올바르게 임포트되지 않았 음을 나타냅니다. 그러나 맨 처음 오류를 다시 확인하십시오. – NJones

+0

처음부터 코딩하는 경우 동의 할 것입니다. 하지만, 작년 10 월에 완성 된 프로젝트의 작업 카피입니다. xcode의 새로운 프로젝트에 적용하면 탄도가되고 왼쪽과 오른쪽으로 오류가 발생하기 시작합니다. Btw, 나는 당신의 제안에 대답하기 만했고, 모든 것이 수입품과 순서가 맞춰진 것 같습니다. – Jiraheta

+0

하지만 동의합니다 ... 이것은 xcode가 wonko에 해당하는 시간 중 하나입니다. – Jiraheta

답변

0

MICheckBox 클래스의 initWithFrame에서 "return self"를 잊어 버린 것 같습니다.

+0

거기에 ... 코드가 당신이 말할 수없는 것처럼 보이는 방법. 하지만 거기에. – Jiraheta

관련 문제