버전마다 다르긴 하지만 우선 올려둔다.
그리고 기본적으로 숨김 파일처리 되어서 숨김파일을 해제해야 한다.
위젯을 받아서 숨김파일을 볼수 있게 한다 (http://www.apple.com/downloads/dashboard/developer/hiddenfiles.html )

 


해당위치를 보면 iOS설치 앱이 보입니다.

 

'Mobile > iPhone / Xcode' 카테고리의 다른 글

[Xcode] XCode VS AppCode  (0) 2013.11.27
[iOS] Open Source Chart for iOS  (0) 2013.01.12
[iOS] About View Controllers  (0) 2012.03.06
[iOS] About Events in iOS  (0) 2012.03.04
[iOS] json parser for Objective-c  (0) 2012.03.04
posted by 뚱2
출처 : iOS document

View controllers are a vital link between an app’s data and its visual appearance. Whenever an iOS app displays a user interface, the displayed content is managed by a view controller or a group of view controllers coordinating with each other. Therefore, view controllers provide the skeletal framework on which you build your apps.

iOS provides many built-in view controller classes to support standard user interface pieces, such as navigation and tab bars. As part of developing an app, you also implement one or more custom controllers to display the content specific to your app. 

'Mobile > iPhone / Xcode' 카테고리의 다른 글

[iOS] Open Source Chart for iOS  (0) 2013.01.12
[iOS] iOS Simulator 위치  (0) 2012.03.06
[iOS] About Events in iOS  (0) 2012.03.04
[iOS] json parser for Objective-c  (0) 2012.03.04
[Xcode4] C, C++ 프로젝트 생성  (0) 2011.10.22
posted by 뚱2
posted by 뚱2
출처 : ㅠㅠ 잊어버렸습니다.


인터넷에서 유니코드 한글 위치와 초성 중성 종성을 찾는 알고리즘을 찾았는데 브라우져를 꺼버렸네요 ㅠㅠ
암튼 위의 이미지를 참조해서 아이폰에서 사용할 요량으로 만들어 봤습니다.
알고리즘에 오타 문제가 있습니다.
초성부분에 int((strCode - 0xAC00) / 28 * 21) 이라고 했는데 "28*21" 부분을 "(28*21)" 괄호로 묶어줘야 합니다.
//ChosungUtil.h
#define HANGUL_START_CODE   0xAC00
#define HANGUL_END_CODE     0xD79F

@interface ChosungUtil : NSObject
{
    NSArray *chosung;
    NSArray *jungsung;
    NSArray *jongsung;
}

@property (nonatomic, retain) NSArray *chosung;
@property (nonatomic, retain) NSArray *jungsung;
@property (nonatomic, retain) NSArray *jongsung;

// 입력문자열를 초성과 비교해서 NSComparisonResult를 반환한다.
- (NSComparisonResult) compare:(NSString *)source withChoungString:(NSString *)search;
// 입력문자열을 초성으로 변환시킨다.
- (NSString*) stringChosung:(NSString *) source; 

@end

//ChosungUtil.m
#import "ChosungUtil.h"

@implementation ChosungUtil

@synthesize chosung, jungsung, jongsung;


- (NSComparisonResult) compare:(NSString *)source withChoungString:(NSString *)search
{
    return [[self stringChosung:source] compare:search];
}

- (NSString*) stringChosung:(NSString *) source
{
    NSMutableString *result = [NSMutableString string];
    
    for (NSUInteger i = 0; i < [source length]; i++) {
        NSInteger unicodeChar = [source characterAtIndex:i];
        
        // 한글인지 검색
        if ( HANGUL_START_CODE <= unicodeChar && unicodeChar <= HANGUL_END_CODE )
        {
            NSInteger chosungIndex  = (NSInteger)((unicodeChar - HANGUL_START_CODE) / (28*21));
            // 중성, 종성은 현재 필요없다.
            //            NSInteger jungsungIndex = (NSInteger)((unicodeChar - HANGUL_START_CODE) % (28*21) / 28);
            //            NSInteger jongsungIndex = (NSInteger)((unicodeChar - HANGUL_START_CODE) % 28);
            
            [result appendFormat:@"%@", [chosung objectAtIndex:chosungIndex]];
        }
        
    }
    
    return result;
}


-(id)init
{
    self = [super init];
    if ( self != nil )
    {
        // 초기화 
        chosung = [[NSArray arrayWithObjects:
                   @"ㄱ",@"ㄲ",@"ㄴ",@"ㄷ",@"ㄸ",@"ㄹ",@"ㅁ",
                   @"ㅂ",@"ㅃ",@"ㅅ",@"ㅆ",@"ㅇ",@"ㅈ",@"ㅉ",
                   @"ㅊ",@"ㅋ",@"ㅌ",@"ㅍ",@"ㅎ",nil] retain];

        jungsung = [[NSArray arrayWithObjects:
                     @"ㅏ",@"ㅐ",@"ㅑ",@"ㅒ",@"ㅓ",@"ㅔ",
                     @"ㅕ",@"ㅖ",@"ㅗ",@"ㅘ",@"ㅙ",@"ㅚ",
                     @"ㅛ",@"ㅜ",@"ㅝ",@"ㅞ",@"ㅟ",@"ㅠ",
                     @"ㅡ",@"ㅢ",@"ㅣ",nil] retain];
        jongsung = [[NSArray arrayWithObjects:
                     @"",@"ㄱ",@"ㄲ",@"ㄳ",@"ㄴ",@"ㄵ",@"ㄶ",
                     @"ㄷ",@"ㄹ",@"ㄺ",@"ㄻ",@"ㄼ",@"ㄽ",@"ㄾ",
                     @"ㄿ",@"ㅀ",@"ㅁ",@"ㅂ",@"ㅄ",@"ㅅ",@"ㅆ",
                     @"ㅇ",@"ㅈ",@"ㅊ",@"ㅋ",@" ㅌ",@"ㅍ",@"ㅎ",nil] retain];     
    }
    
    return self;
}


-(void)dealloc
{
    [chosung release];
    [jungsung release];
    [jongsung release];
    
    [super dealloc];
}

@end



//사용방법
-(IBAction)clickedButton:(id)sender 
{
    NSLog(@"%@", hangulField.text);
    
    ChosungUtil *util = [[[ChosungUtil alloc] init] autorelease];
    
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"변환결과" 
                                                    message:[util stringChosung:hangulField.text] 
                                                   delegate:self
                                           cancelButtonTitle:nil 
                                          otherButtonTitles:@"닫기", nil];
    [alert show];
    [alert release];
}




 
posted by 뚱2



1. 제   목 : 아이폰 프로그래밍 UIKit 핵심 바이블

2. 출판사 : 정보문화사


3. 저   자 : 토코로 유타 / 김은철, 유세라 번역


4. 가   격 : 25,000원


5. 난이도 : 초중급 (★★★☆☆)


6. 판   매 : 판매중


7. 평   가 : ★★★★☆


아이폰 번역책이 나온지 한 2년쯤 되는 것 같습니다. 대부분의 아이폰 책은 기초서적이고


또한 아이폰 개발에 전반적인 사항을 다루고 있습니다.


그런 와중에 이책은 독보적인 책입니다.


다른 부분을 제외한 UI에 관련된 UIKit Framework만을 집중적으로 다루고 있습니다.


또한 인터페이스 빌더를 사용하지 않고 코드만으로 UIKit을 설명하고 있습니다.


이런 부분에 호불호가 있을수 있는데 저에게는 정말 베스트한 방식 입니다.


자동화 툴은 사용하기 편리하지만 배울때는 도움이 되지 않습니다.


자동화 이면에 가려진 원리가 보여지지 않게 때문에 나중에 응용력 부분에 문제가


생길수 있습니다. 결국 원리를 알아야지 응용력이라는게 생기는데


이 책은 그런 부분에 있어서 코드로만 UIKit을 설명하기에 기초 UIKit을 배우는데 정말


큰 도움이 됩니다. 


예전의 정보문화사 책을 참 많이 구입했었는데 어느순간부터 책을 선뜻 구입하지 않았던것 같습니다.


그 이유는 여러가지가 있는데 우선 내용이 예전만 못했고 책의 표지나 질이


다른 출판사에 비해서 떨어지는 느낌을 많이 받았습니다. 지금 이책도 책의 질이 두꺼운


은행 달력 용지(?)를 사용한 느낌이 드는데 책의 무게와 부피가 늘어나는 부분이라고 생각합니다.


책의 종이 질에 대한 부분은 개인적으로 인사이트의 책을 좋아라 합니다.


이야기가 이상한 방향으로 흘렀는데 근래들어 참 좋은 정보문화사 책입니다. 정보문화사 책 뿐만 아니

아이폰 책 중에서도 좋은 책입니다.

UIKit만을 설명하지만 인터페이스 빌더를 사용하지 않음으로 iOS의 돌아가는 방식을 다른 어떤 책


보다 많이 볼수 있는 책이라고 생각합니다.


특히 UI에 대한 레퍼런스 책으로 참 유용합니다.


posted by 뚱2
우리은행 아이폰 앱을 사용하면은 아래 탭바가 애니메이션 처리되는 것을 알 수 있다.

 

이걸 보고 나도 궁금해서 찾아보았다.

 기능 똑 같이 구현했는데 아무리 아이폰이라도 결국 이쁜 이미지가 없으면 말짱 꽝이라는걸 느꼈다.


우선 인터페이스 빌더에서 아래 UIView 오브젝트를 넣어준다.
'올리기', '내리기' 버튼은 당연 IBAction 잡아준다.

#import <UIKit.h>


@interface AnimationTestAppDelegate : NSObject<UIApplicationDelegate>

@property (nonatomic, retain) IBOutlet UIWindow *window;

@property (nonatomic, retain) IBOutlet UIView *viewTabbar;

@property (nonatomic, assign) CGRect viewFrame;

 

-(IBAction)clickedUp:(id)sender;

-(IBAction)clickedDown:(id)sender;

 

@end

//AnimationTestAppDelegate.m 

#import "AnimationTestAppDelegate.h"

@implementation AnimationTestAppDelegate

@synthesize window = _window;
@synthesize viewTabbar;
@synthesize viewFrame;

#pragma mark-
#pragma mark button events
-(IBAction)clickedUp:(id)sender
{
    // 애니메이션을 보여준다.
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];
    
    self.viewTabbar.frame = viewFrame;
    
    
    [UIView commitAnimations];    
}

-(IBAction)clickedDown:(id)sender
{
    // 애니메이션을 보여준다.
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];
    
    CGRect screen = [[UIScreen mainScreen] bounds];
    CGRect rect = self.viewTabbar.frame;
    rect.origin.y = screen.size.height;
    self.viewTabbar.frame = rect;
    
    
    [UIView commitAnimations];
}
#pragma mark-


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    self.viewFrame = viewTabbar.frame;
    
    [self.window makeKeyAndVisible];
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application
{
    /*
     Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
     Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
     */
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    /*
     Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
     If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
     */
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    /*
     Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
     */
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    /*
     Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
     */
}

- (void)applicationWillTerminate:(UIApplication *)application
{
    /*
     Called when the application is about to terminate.
     Save data if appropriate.
     See also applicationDidEnterBackground:.
     */
}

- (void)dealloc
{
    [viewTabbar release];
    
    [_window release];
    [super dealloc];
}

@end

이벤트 부분과 앱 처음 구동될때 인터페이스빌더에서 잡아주었던 위치 저장 부분 'viewFrame'만 확인하면 된다.
이제 UIView로 구현된 부분에 다른 컨트롤들을 올리면 탭바 비스무리 하게 사용할 수 있다.



posted by 뚱2
인터페이스 빌더에서 컨트롤러를 연결하면 위치가 잘 나온다.
 


 
그런데 프로그램 코드상에서 연결하면 아래와 같이 나온다.
 

딱 Status Bar 크기 CGRect로 20포인트 만큼 위로 올라갔다.
코드에서 해당 View 를

myRootViewController 
    = [[MyRootViewController alloc] initWithNibName:@"MyRootViewController" 
                                             bundle:nil];
[self.window addSubview:myRootViewController.view];
[myRootViewController.view setFrame:CGRectMake(0, 20, 320, 460)];


20 포인트만큼 내려주자.  

ps. XCode 3.2와 XCode 4.XX 버전에서 View-base Application을 만들면 내부 구조가 다릅니다. 이부분을 정확하게 확인해 봐야 겠습니다.
     지금 문제는 단순하게 밀린 화면을 위로 올린것 뿐 입니다. 

#해결 (2011-08-08)
20 포인트로 고정하면 기기에 따른 status바가 다를수 있습니다. 일예로 아이패드와 호환성 문제가 발생할수 있습니다.
이때 UIScreen 으로 장치의 해상도와 실제뷰 화면의 해상도를 가져오면 유리 합니다.
    CGRect rect = [[UIScreen mainScreen] applicationFrame];
    [myRootViewController.view setFrame:rect];

 실제 디버깅 값입니다.
참고 : http://maccrazy.tistory.com/74 


추가 : 2012.03.04
iOS 5.0 이상부터는 아래와 같이 코딩하면 됩니다.
 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    self.viewController = [[HelloWorldViewController alloc] initWithNibName:@"HelloWorldViewController" 
                                                                     bundle:nil];

    self.window.rootViewController = self.viewController;

    
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
posted by 뚱2
Couldn't register XXX with the bootstrap server. Error: unknown error code. This generally means that another instance of this process was already running or is hung in the debugger.Program received signal: “SIGABRT”.


아무 이상도 없는데 디버그로 실행하다 보면 발생한다.
소스코드를 눈씼고 찾아봤고 다 뒤져봤는데 결국 못찾았다.
구굴링한 결과 리부팅이 직빵이라고 한다.

ps. 리부팅 하지 않아도 Xcode를 Command+Q로 종료하고 다시 실행하면 정상적으로 작동한다.

 
posted by 뚱2

위 중에서 많이 사용하는 건

Step Over : F6    -> 현재 디버깅 라인을 한줄 한줄 내려간다.
Step Into   :  F7  -> Step Over와 같지만 함수(메소드, 메세지)를 만나면 해당 함수로 점프한다.
Step Out  : F8    -> 현재 함수를 빠져나온다 (메세지를 호출한 쪽으로 점프)

Continue : ctrl + command + Y  -> 다음 브레이킹포인트까지 이동
Add/Remove Breapoint at Current Line  : command + \  -> 브레이킹 포인트 토클 버튼
 
posted by 뚱2


1. 제   목 : Head First iPhone Development

2. 출판사 : 한빛미디어

3. 저   자 : 댄 필로네(Dan Pilone), 트레이시 필로네(Tracey Pilone)  / 강권학 역

4. 가   격 : 30,000원

5. 난이도 : 초중급 (★★☆☆☆)

6. 판   매 : 판매중

7. 평   가 : ★★★★★
   
    요즘 한참 즐겨봤던 책 입니다. 아이폰 개발의 모든것을 보여주는 레퍼런스 서적은 아닙니다.

    편하게 읽을수 있는 입문 개발 서적입니다. 편하게 볼 수 있다고 해서 쉬운내용만 다르고 있지는 않습니다.
    
    아이폰 개발을 위해서 기초서적을 3~4권 정도 구입했는데 그중에 가장 많은 도움을 받은 개발 서적입니다.

    Head First만의 고유한 스타일이 이책에도 고스란히 베어 있습니다.

    저는 개인적으로 Head First 시리즈의 내용은 좋아하지만 어지러운 편집스타일은 좋아하진 않습니다.

    그렇지만 이책은 그런 와중에 집중해서 읽은 책입니다.

    

'Books' 카테고리의 다른 글

도와주세요! 팀장이 됐어요  (0) 2011.02.23
Head First Object-Oriented Analysis & Design  (0) 2011.02.18
COM/DCOM 프라이머 플러스  (0) 2010.08.16
C# and the .NET Platform  (0) 2010.01.12
손에 잡히는 정규표현식  (0) 2010.01.08
posted by 뚱2