검색결과 리스트
전체에 해당되는 글 1012건
- 2011.10.21 [Oracle] 날짜를 특정 포맷으로 변경
- 2011.10.21 [Oracle] NVL 함수
- 2011.10.21 Library와 Framework의 차이점 1
- 2011.10.17 [jQuery] serialize()
- 2011.10.14 [javascript] Testing the type of various variables
- 2011.10.13 [ExtJS] ExtJS4에서 JSON의 패키지 위치 변경
- 2011.10.13 [iOS] iOS5 GM 설치후 Personal Hotspot이 안나타날때 처리 방법
- 2011.10.10 [Oracle] 테이블, 컬럼 조회
- 2011.10.10 [iBatis] iBatis 즐겨찾기
- 2011.10.07 [Eclipse] eclipse에서 .jsp 파일을 작성할때 실제 .java 파일 생성 위치
- 2011.10.05 아이폰 펌웨어 업데이트
- 2011.10.03 [iOS] Pull down to refresh
- 2011.09.30 개인적으로 좋아하는 노래들
- 2011.09.28 [MSSQL] CONVERT TYPE 0~200
- 2011.09.24 [iOS] 아이폰 SMS 말풍선을 만들어 보기 1
- 2011.09.22 hosts 파일 수정
- 2011.09.17 [iOS] 프로젝트를 묶는 논리적 개념 Workspace
- 2011.09.16 [iOS] Using Open Source Static Libraries in Xcode 4
- 2011.09.15 [MSSQL] 문자열 자르기
- 2011.09.14 Context Switching (문맥전환)
- 2011.09.12 [iOS] 프로젝트 템플릿 (링크)
- 2011.09.12 [Xcode] XCode4 Release, Debug 전환
- 2011.09.12 [iOS] iOS에서는 보안상의 이유로 dynamic library Project를 만들수 없습니다.
- 2011.09.10 [iOS] 아이폰 초성 검색 클래스를 만들어 보자
- 2011.09.09 [Eclipse] Toggle Comment 단축키
- 2011.09.06 [MSSQL] Oracle과 비슷한 RowNum
- 2011.09.04 [iOS] Objective-C Singleton 만들기 2
- 2011.09.04 [iOS] iOS5 Beta 7에서는 Window-Based Application가 없어졌습니다.
- 2011.09.02 [MSSQL] Alter Table
- 2011.09.01 Java 언어로 배우는 디자인 패턴 입문
글
-- TO_DATE : 문자열을 받아서 날짜타입으로 변환 -- TO_CHAR : 날짜타입을 문자열로 변환 -- 1. 시스템시간을 이용해서 문자열을 반환한다. SELECT TO_CHAR(SYSDATE, 'YYYYMMDDHHmmss') as curDate FROM dual -- 2. 문자열을 특정 포맷에 맞게 출력한다. -- 문자열을 DATE로 변환후에 다시 포맷에 맞게 문자열로 변환 SELECT TO_CHAR(TO_DATE('201111031452','YYYYMMDDHH24MISS'),'YYYY.MM.DD') FROM DUAL
'DB / NoSQL > Oracle / Toad' 카테고리의 다른 글
[Oracle] DECODE 함수 (0) | 2011.11.01 |
---|---|
[Oracle] CEIL, FLOOR 함수 (0) | 2011.11.01 |
[Oracle] NVL 함수 (0) | 2011.10.21 |
[Oracle] 테이블, 컬럼 조회 (0) | 2011.10.10 |
[Oracle] oracle em emctl 기동안될때 조치 (0) | 2011.04.26 |
트랙백
댓글
글
-- expr1이 null이라면 expr2로 대치한다. SELECT NVL([expr1],[expr2]) FROM dual
'DB / NoSQL > Oracle / Toad' 카테고리의 다른 글
[Oracle] CEIL, FLOOR 함수 (0) | 2011.11.01 |
---|---|
[Oracle] 날짜를 특정 포맷으로 변경 (0) | 2011.10.21 |
[Oracle] 테이블, 컬럼 조회 (0) | 2011.10.10 |
[Oracle] oracle em emctl 기동안될때 조치 (0) | 2011.04.26 |
[Oracle] Oracle 10g Unintall (0) | 2011.04.26 |
트랙백
댓글
글
출처 : 거꾸로 배우는 소프트웨어 개발
저는 처음 이부분이 매우 헷갈렸습니다. 지금은 어렴풋이 다른점을 느끼고 있었는데
'거꾸로 배우는 소프트웨어 개발'이라는 책을 읽으면서 정말 명확하게 이해되었습니다.
라이브러리와 프레임워크의 차이는 제어 흐름에 대한 주도성이 누구에게/어디에 있는가이다. 라이브러리는
라이브러리를 가져다가 사용하고 호출하는 측에 전적으로 주도성이 있다. 반면, 프레임워크는 그 틀안에 이미
제어 흐름에 대한 주도성이 내재한다. 프레임워크는 가져다가 사용한다기보다는 거기에 들어가서 사용한다는
느낌/관점이다.
개인적으로 더 이상 명확 할 수 없는 설명이라고 생각합니다.
'일반' 카테고리의 다른 글
[Ghost] 고스트를 이용해서 백업하자 (0) | 2012.04.26 |
---|---|
[정규표현식] 요약 (0) | 2012.02.15 |
Context Switching (문맥전환) (0) | 2011.09.14 |
[객체지향] 비슷한것 같으면서도 다른 Attribute와 Property의 차이점 (0) | 2011.05.19 |
RFP ( Request for Proposal ) (0) | 2011.04.07 |
트랙백
댓글
글
'JavaScript > jQuery' 카테고리의 다른 글
[jQuery] $.ajax json type으로 보내기 (0) | 2011.12.19 |
---|---|
[jQuery] jQuery.serializeObject() ( 폼 객체를 json 형태로 만들기 ) (0) | 2011.12.19 |
[jQuery] jQuery 항상 최신버전으로 유지 하는 방법 (0) | 2011.12.17 |
[jQuery] find, filter, children (0) | 2011.12.08 |
[jQuery] select box 추가 선택 삭제 (2) | 2011.10.27 |
트랙백
댓글
글
var myFunction = function() { console.log('hello'); }; var myObject = { foo : 'bar' }; var myArray = [ 'a', 'b', 'c' ]; var myString = 'hello'; var myNumber = 3; typeof myFunction; // returns 'function' typeof myObject; // returns 'object' typeof myArray; // returns 'object' -- careful! typeof myString; // returns 'string'; typeof myNumber; // returns 'number' typeof null; // returns 'object' -- careful! if (myArray.push && myArray.slice && myArray.join) { // probably an array // (this is called "duck typing") } if (Object.prototype.toString.call(myArray) === '[object Array]') { // Definitely an array! // This is widely considered as the most robust way // to determine if a specific value is an Array. }
'JavaScript > JavaScript' 카테고리의 다른 글
[Javascript] Post 방식으로 Popup창 생성 (0) | 2011.12.13 |
---|---|
[Javascript] Dom Object를 동적으로 생성할때 객체 전달 방법 (0) | 2011.12.06 |
[JavaScript] this에 대해서 (0) | 2011.05.27 |
[javascript] Closures (0) | 2011.05.24 |
iE와 Crome의 getAttribute메소드 차이 (0) | 2011.04.08 |
트랙백
댓글
글
기존은 Ext.util.JSON이었는데 4.0으로 오면서 Ext.JSON으로 변경되었다.
이거때문에 한참을 삽질 했네 ㅡㅡ;
'JavaScript > ExtJS' 카테고리의 다른 글
[ExtJS] ExtJs Grid 즐겨찾기 (0) | 2012.02.09 |
---|
트랙백
댓글
글
재 설치를 해보기도 했는데 안되더군요.
구글링 해본 결과
네트워크 설정 재설정을 해주면 해결됩니다.
위치는 "설정 -> 일반 -> 재설정 -> 네트워크 설정 재설정" 입니다.
전 GM 버전인데요.
오늘 판올림한 일반 버전이랑 GM버전이랑 바이트 코드가 같다고 합니다.
그리니까 오늘 일반 버전에서도 동일한 문제가 발생할수 있습니다.
'Mobile > iPhone / Xcode' 카테고리의 다른 글
[iOS] json parser for Objective-c (0) | 2012.03.04 |
---|---|
[Xcode4] C, C++ 프로젝트 생성 (0) | 2011.10.22 |
아이폰 펌웨어 업데이트 (0) | 2011.10.05 |
[iOS] Pull down to refresh (0) | 2011.10.03 |
[iOS] 아이폰 SMS 말풍선을 만들어 보기 (1) | 2011.09.24 |
트랙백
댓글
글
-- 테이블명 조회 SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE='TABLE' -- 컬럼 조회 SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, DATA_SCALE, NULLABLE FROM COLS WHERE TABLE_NAME = '테이블명' -- 컬럼 찾기 SELECT * FROM COLS WHERE 1=1 AND TABLE_NAME LIKE '%' || UPPER([테이블명]) || '%' AND COLUMN_NAME LIKE '%' || UPPER([컬럼명]) || '%'; -- 테이블 찾기 SELECT * FROM USER_OBJECTS WHERE 1 = 1 AND OBJECT_TYPE = 'TABLE' AND OBJECT_NAME LIKE '%' || UPPER([테이블명]) || '%';
'DB / NoSQL > Oracle / Toad' 카테고리의 다른 글
[Oracle] 날짜를 특정 포맷으로 변경 (0) | 2011.10.21 |
---|---|
[Oracle] NVL 함수 (0) | 2011.10.21 |
[Oracle] oracle em emctl 기동안될때 조치 (0) | 2011.04.26 |
[Oracle] Oracle 10g Unintall (0) | 2011.04.26 |
[Oracle] 테이블 목록 조사하기 (0) | 2011.04.07 |
트랙백
댓글
글
PDF 파일 다운로드 링크 : http://www.google.co.kr/url?sa=t&rct=j&q=ibatis%20insert%20tag%20pre%20select&source=web&cd=2&sqi=2&ved=0CEIQFjAB&url=http%3A%2F%2Fsvn.apache.org%2Frepos%2Fasf%2Fibatis%2Fjava%2Fibatis-2%2Ftrunk%2Fibatis-2-docs%2Fko%2FiBATIS-SqlMaps-2_ko.pdf&ei=fQj0ToqhG-G1iQf4v_CpAQ&usg=AFQjCNGxRN-0MDEZhTrlbJWVpVHyUM0nqg&sig2=_Z7sUEho1oDVWHp6KIKD9g&cad=rjt
'Java > iBatis / MyBatis' 카테고리의 다른 글
[iBatis] MSSQL Output Parameter (0) | 2012.09.05 |
---|---|
[iBatis] iBatis에서 동적으로 컬럼을 생성하려고 할때 (0) | 2012.07.12 |
[iBatis] 로깅과 바인딩 처리 (0) | 2012.07.06 |
[iBatis] 강좌 링크 (0) | 2012.07.06 |
[iBatis] CLOB input, update, select (0) | 2012.02.21 |
트랙백
댓글
글
출처 : http://ilovejsp.blog.me/100129601931
[workspace 위치]\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp[X]\[project명]
'IDE/Tool > Eclipse' 카테고리의 다른 글
[Eclipse] Tasks를 사용하자. (0) | 2011.11.11 |
---|---|
[Eclipse] 이클립스 속도향상 설정 (0) | 2011.10.25 |
[Eclipse] Toggle Comment 단축키 (0) | 2011.09.09 |
[Eclipse] 세로모드 사용하기 (컬럼) (0) | 2011.08.31 |
[Eclipse] 탭을 공백으로 변환하기 Insert Spaces for tabs (0) | 2011.08.31 |
트랙백
댓글
글
* 맥에서 ipsw 파일로 업데이트 방법
1. 최신 펌웨어 파일을 받는다 (보통 .dmg 파일이다.)
2. 원하는 위치에 파일을 푼다.
3. 버전에 맞는 iTune를 설치한다.
4. 백업을 한다.
5. ALT + Restore 버튼을 클릭한다. (Windows는 Shift + Restore)
6. 저장된 ipsw 파일을 선택한다.
7. 그다음은 시키는데로 한다.
'Mobile > iPhone / Xcode' 카테고리의 다른 글
[Xcode4] C, C++ 프로젝트 생성 (0) | 2011.10.22 |
---|---|
[iOS] iOS5 GM 설치후 Personal Hotspot이 안나타날때 처리 방법 (0) | 2011.10.13 |
[iOS] Pull down to refresh (0) | 2011.10.03 |
[iOS] 아이폰 SMS 말풍선을 만들어 보기 (1) | 2011.09.24 |
[iOS] 프로젝트를 묶는 논리적 개념 Workspace (0) | 2011.09.17 |
트랙백
댓글
글
소스 분석하면서 직접 구현해 본것.
나중에 사용하기 위해서 저장
// viewcontroller.h
@interface ViewController : UIViewController <UITableViewDatasource, UITableViewDelegate> { NSMutableArray *data; BOOL bLoading; BOOL bDragging; UIView *headerView; UIActivityIndicatorView *activity; UILabel *label; UIImageView *imageView; NSString *strBeginDragging; NSString *strEndDragging; NSString *strLoading; } @property (nonatomic, retain) NSMutableArray *data; @property (nonatomic, assign, getter = isLoading ) BOOL bLoading; @property (nonatomic, assign, getter = isDraggin ) BOOL bDragging; @property (nonatomic, retain) UIActivityIndicatorView *activity; @property (nonatomic, retain) UIView *headerView; @property (nonatomic, retain) UILabel *label; @property (nonatomic, retain) UIImageView *imageView; @property (nonatomic, retain) NSString *strBeginDragging; @property (nonatomic, retain) NSString *strEndDragging; @property (nonatomic, retain) NSString *strLoading; - (void)createHeader; @end
// viewcontroller.m
#define REFRESH_HEADER_HEIGHT 60.0f @implementation ViewController @synthesize data; @synthesize bLoading, bDragging; @synthesize activity, headerView; @synthesize label; @synthesize imageView; @synthesize strBeginDragging, strEndDragging, strLoading; #pragma mark - animation - (void)refresh { // This is just a demo. Override this method with your custom reload action. // Don't forget to call stopLoading at the end. [self performSelector:@selector(stopLoading) withObject:nil afterDelay:2.0]; } - (void)startLoading { self.bLoading = true; // Show the header [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.3]; UITableView *tableView = (UITableView *)self.view; tableView.contentInset = UIEdgeInsetsMake(REFRESH_HEADER_HEIGHT, 0, 0, 0); label.text = strLoading; [activity startAnimating]; [UIView commitAnimations]; // Refresh action! [self refresh]; } - (void)stopLoading { self.bLoading = false; // Hide the header [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDelegate:self]; [UIView setAnimationDuration:0.3]; [UIView setAnimationDidStopSelector:@selector(stopLoadingComplete:finished:context:)]; UITableView *tableView = (UITableView *)self.view; tableView.contentInset = UIEdgeInsetsZero; //[refreshArrow layer].transform = CATransform3DMakeRotation(M_PI * 2, 0, 0, 1); [self.activity stopAnimating]; [UIView commitAnimations]; } - (void)stopLoadingComplete:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context { // Reset the header label.text = strBeginDragging; label.text = strBeginDragging; [imageView layer].transform = CATransform3DMakeRotation(M_PI * 2, 0, 0, 1); } #pragma mark - scroll events - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { if ( self.isLoading ) return; self.bDragging = true; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if ( self.isLoading ) { //NSLog(@"isLoading : %f", scrollView.contentOffset.y ); } else if ( self.isDraggin && scrollView.contentOffset.y < 0 ) { //NSLog(@"self.isDragging ; %f", scrollView.contentOffset.y ); [UIView beginAnimations:nil context:NULL]; if (scrollView.contentOffset.y < -REFRESH_HEADER_HEIGHT) { // User is scrolling above the header label.text = strEndDragging; [imageView layer].transform = CATransform3DMakeRotation(M_PI, 0, 0, 1); } else { // User is scrolling somewhere within the header label.text = strBeginDragging; [imageView layer].transform = CATransform3DMakeRotation(M_PI * 2, 0, 0, 1); } [UIView commitAnimations]; } } - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { if ( self.isLoading ) return; self.bDragging = false; NSLog(@"scrollView.contentOffset.y: %f <= %f", scrollView.contentOffset.y, -REFRESH_HEADER_HEIGHT); if (scrollView.contentOffset.y <= -REFRESH_HEADER_HEIGHT) { // Released above the header [self startLoading]; } } #pragma mark - dealloc - (void)createHeader { strBeginDragging = [[NSString alloc] initWithString:@"새글을 불러오시겠습니까?"]; strEndDragging = [[NSString alloc] initWithString:@"놓으면 새글을 불러옵니다."]; strLoading = [[NSString alloc] initWithString:@"로딩중입니다..."]; // view headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0-REFRESH_HEADER_HEIGHT, 320, REFRESH_HEADER_HEIGHT)]; // activityindicator activity = [[UIActivityIndicatorView alloc] init]; activity.center = CGPointMake(320.f/2, REFRESH_HEADER_HEIGHT/2); activity.hidesWhenStopped = true; activity.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray; // label label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, REFRESH_HEADER_HEIGHT)]; label.text = strBeginDragging; label.backgroundColor = [UIColor clearColor]; label.font = [UIFont boldSystemFontOfSize:12.0]; label.textAlignment = UITextAlignmentCenter; // imageView UIImage *image = [UIImage imageNamed:@"arrow.png"]; imageView = [[UIImageView alloc] initWithImage:image]; imageView.frame = CGRectMake(0 , (REFRESH_HEADER_HEIGHT-image.size.height) /2 , image.size.width , image.size.height); imageView.backgroundColor = [UIColor clearColor]; [headerView addSubview:activity]; [headerView addSubview:label]; [headerView addSubview:imageView]; [self.view addSubview:headerView]; } - (void)dealloc { [strLoading release]; [strBeginDragging release]; [strEndDragging release]; [imageView release]; [label release]; [activity release]; [headerView release]; [data release]; [super dealloc]; } #pragma mark - table datasource - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; } cell.textLabel.text = [data objectAtIndex:indexPath.row]; return cell; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [data count]; } #pragma mark - memorywarning - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } #pragma mark - View lifecycle - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.data = [NSMutableArray arrayWithObjects: @"Pull down to refresh", nil]; [self createHeader]; } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } @end
'Mobile > iPhone / Xcode' 카테고리의 다른 글
[iOS] iOS5 GM 설치후 Personal Hotspot이 안나타날때 처리 방법 (0) | 2011.10.13 |
---|---|
아이폰 펌웨어 업데이트 (0) | 2011.10.05 |
[iOS] 아이폰 SMS 말풍선을 만들어 보기 (1) | 2011.09.24 |
[iOS] 프로젝트를 묶는 논리적 개념 Workspace (0) | 2011.09.17 |
[iOS] Using Open Source Static Libraries in Xcode 4 (0) | 2011.09.16 |
트랙백
댓글
글
노래 듣는걸 좋아하긴 하는데 듣기만 하니 나중에 노래 찾을려면 제목도 모르고 음정이랑
특정 소절만 기억나는 기억나네 ....
좋아 하는 곡을 하나 둘씩 업데이트 해야겠다.
* keane : everybody's changing
* queen : i want to break free
* stratovarius : Forever
* The Corrs : What con I do
* 조덕배 : 나의 옛날 이야기
* John Lenon : Love
* 이정현 : 한여름의 크리스마스
* Coldplay : Viva la vida
'뚱2's 이야기' 카테고리의 다른 글
무료 해외 토렌트 이용사이트 (0) | 2011.10.29 |
---|---|
[아이폰] iOS5 업그레이드 이후 배터리 소모 줄이는 방법 (0) | 2011.10.23 |
Macbook Pro (2nd HDD caddy Apple OptiBay SuperDrive Replacement SATA With SSD RAID0) (0) | 2011.04.22 |
PayPal Password 변경 하기 (0) | 2011.04.10 |
ActiveX 없는 인터넷 속도 측정 사이트 (0) | 2011.01.30 |
트랙백
댓글
글
'DB / NoSQL > MSSQL' 카테고리의 다른 글
[MSSQL] 언어 타입 변경하기 (0) | 2012.04.20 |
---|---|
[MSSQL] SQL Server Management Studio 단축키 (0) | 2012.04.04 |
[MSSQL] 문자열 자르기 (0) | 2011.09.15 |
[MSSQL] Oracle과 비슷한 RowNum (0) | 2011.09.06 |
[MSSQL] Alter Table (0) | 2011.09.02 |
트랙백
댓글
글
혼자 구현해보다가 몇가지 문제를 해결하지 못하고 성질버려서 구굴링한 결과 동영상으로 튜토리얼까지
만든 사이트를 찾았습니다.
위 사이트는 오른쪽, 왼쪽 말풍선 두개를 사용하는데 전 왼쪽용 말풍선을 도저히 구하지 못해서 결국
이미지를 반전시켰습니다.
나중에 사용할 요량으로 우선 저장
//MainViewController.h
@interface MainViewController : UITableViewController { NSMutableArray *arrSms; } @property (nonatomic, retain) NSMutableArray *arrSms; - (void)initResource; @end
//MainViewController.m
#import "MainViewController.h" @implementation MainViewController @synthesize arrSms; #pragma mark- #pragma mark resource - (void)dealloc { [arrSms release]; [super dealloc]; } - (void)initResource { // Custom initialization self.tableView.frame = [[UIScreen mainScreen] applicationFrame]; arrSms = [[NSMutableArray alloc] initWithObjects:@"안녕하세요" , @"네 안녕이요" , @"이건 조금 긴 글 입니다. ^^" , @"이건 더 긴글 입니다. 하하하하 " , @"아이폰도 UI를 이쁘게 만들려면 결국 노가다가 많군요." , @"디자인에 잼병인 저로서는 정말 좌절을 느끼는 중입니다. 이 쉬운 이미지를 찾기 위해서 하루종일 뒤졌어요" , @"결국 반대이미지를 찾지 못해서 결국 프로그램에서 이미지 뒤집는 일까지 있어요 그냥 반대 이미지 사용하면 쉬운데...." , nil]; } #pragma mark- - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if ( self ) { [self initResource]; } return self; } - (id)initWithStyle:(UITableViewStyle)style { self = [super initWithStyle:style]; if (self) { [self initResource]; } return self; } - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } #pragma mark - View lifecycle - (void)viewDidLoad { [super viewDidLoad]; // Uncomment the following line to preserve selection between presentations. // self.clearsSelectionOnViewWillAppear = NO; // Uncomment the following line to display an Edit button in the navigation bar for this view controller. // self.navigationItem.rightBarButtonItem = self.editButtonItem; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; // self.tableView.backgroundColor = [UIColor colorWithRed:219.0/255.0 green:226.0/255.0 blue:237.0/255.0 alpha:1.0]; } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; self.arrSms = nil; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return [arrSms count]; } #define TAG_IMAGEVIEW 1 #define TAG_LABEL 2 #define TAG_MESSAGE 3 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UIImageView *imageView = nil; UILabel *label = nil; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; cell.selectionStyle = UITableViewCellSelectionStyleNone; imageView = [[UIImageView alloc] init ]; imageView.tag = TAG_IMAGEVIEW; label = [[UILabel alloc] init]; label.tag = TAG_LABEL; label.backgroundColor = [UIColor clearColor]; label.numberOfLines = 0; label.lineBreakMode = UILineBreakModeWordWrap; label.font = [UIFont systemFontOfSize:14.0]; UIView *message = [[UIView alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height) ]; message.tag = TAG_MESSAGE; [message addSubview:imageView]; [message addSubview:label]; message.autoresizingMask = UIViewAutoresizingFlexibleWidth; [cell.contentView addSubview:message]; [imageView release]; [label release]; [message release]; } else { imageView = (UIImageView *)[[cell.contentView viewWithTag:TAG_MESSAGE] viewWithTag:TAG_IMAGEVIEW]; label = (UILabel *)[[cell.contentView viewWithTag:TAG_MESSAGE] viewWithTag:TAG_LABEL]; } // Configure the cell... NSString* text = [arrSms objectAtIndex:indexPath.row]; CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:14.0] constrainedToSize:CGSizeMake(220.0f, 480.0f) lineBreakMode:UILineBreakModeWordWrap]; UIImage *image = nil; if ( indexPath.row%2 == 0 ) { imageView.frame = CGRectMake(320.0f-(size.width+35.0f), 2.0f, size.width+35.0f, size.height+24.0f); imageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; image = [[UIImage imageNamed:@"Balloon_1@2x.png"] stretchableImageWithLeftCapWidth:28.0f topCapHeight:24.0f]; label.frame = CGRectMake(307.0f-(size.width+5.0f), 10.0f, size.width+8.0f, size.height+5.0f); label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; } else { imageView.frame = CGRectMake(0, 2.0f, size.width+35.0f, size.height+24.0f); imageView.autoresizingMask = UIViewAutoresizingFlexibleRightMargin; UIImage *tempImage = [UIImage imageNamed:@"Balloon_2@2x.png"]; UIImage *covertImage = [UIImage imageWithCGImage:(CGImageRef)tempImage.CGImage scale:1.0f orientation:UIImageOrientationUpMirrored]; image = [covertImage stretchableImageWithLeftCapWidth:28.0f topCapHeight:24.0f]; label.frame = CGRectMake(25.0f,10.0f, size.width+5.0f, size.height); label.autoresizingMask = UIViewAutoresizingFlexibleRightMargin; } imageView.image = image; label.text = text; return cell; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSString* text = [arrSms objectAtIndex:indexPath.row]; CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:14.0] constrainedToSize:CGSizeMake(220.0f, 480.0f) lineBreakMode:UILineBreakModeWordWrap]; return size.height+28.0f; } #pragma mark - Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Navigation logic may go here. Create and push another view controller. /* <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil]; // ... // Pass the selected object to the new view controller. [self.navigationController pushViewController:detailViewController animated:YES]; [detailViewController release]; */ } @end
'Mobile > iPhone / Xcode' 카테고리의 다른 글
아이폰 펌웨어 업데이트 (0) | 2011.10.05 |
---|---|
[iOS] Pull down to refresh (0) | 2011.10.03 |
[iOS] 프로젝트를 묶는 논리적 개념 Workspace (0) | 2011.09.17 |
[iOS] Using Open Source Static Libraries in Xcode 4 (0) | 2011.09.16 |
[iOS] 프로젝트 템플릿 (링크) (0) | 2011.09.12 |
트랙백
댓글
글
hosts 파일에 아이피와 도메인네임을 등록해 놓으면 해당 도메인으로 접속이 가능해 집니다.
DNS는 반영시간이 약 하루정도 걸리며 테스트 용도로 사용하기에는 불편한 점이 있어
테스트 용도나 프로젝트시에 간편하게 사용할 수 있습니다.
* Windows 7 기준으로 입니다.
파일을 열때 권한이 없다고 할 때가 있습니다. Windows Vista 부터 보안이 강화되어서 그런것 같습니다.
그럴때는
속성창을 열고
해당유저에게 쓰기 권한을 주시면 됩니다.
'#'은 주석입니다.
'Network' 카테고리의 다른 글
[KT EGG] 스트롱에그 KWD-B2600 (0) | 2012.09.20 |
---|---|
[Ping] KT 핑 테스트 (0) | 2012.06.30 |
[Util] Ping Test Easy (0) | 2012.04.06 |
아이피 위치 확인 하는 방법 (0) | 2012.02.07 |
유용한 NETSTAT 명령어 (0) | 2008.07.14 |
트랙백
댓글
글
그런데 보통 프로그램을 만드는 프로젝트(*1)는 하나의 프로그램으로 끝날수도 있지만 규모가 커지면 여러가지 프로그램이
묶여서 하나의 프로젝트로 됩니다.
이럴때 관리를 위해서 논리적으로 묶어줄 필요가 있는데
XCode에서는 Workspace, Visual Studio에서는 solution, Eclipse에서는 Workspace로 묶어 줄수 있습니다.
새로운 워크스페이스를 생성합니다.
워크스페이스 이름과 저장할 위치를 지정합니다.
워크스페이스를 생성하면 프로젝트가 없는 빈 워크스페이스가 생성됩니다.
워크스페이스에 새로운 프로젝트를 생성 할 수도 있고 기존 프로젝트를 추가 할 수도 있습니다.
기존 프로젝트를 추가한 모습니다.
결국 워크스페이스는 여러개의 단위프로젝트를 논리적으로 묶어주는 역활을 합니다.
빈 워크스페이스를 만들면
XXX.xcworkspace가 만들어 지는데 이 파일을 열어보면 아래와 같이 폴더안에 파일이 있고 XML로 정보를 가지고 있는걸
알수 있습니다.
개발에 필요한 자체 라이브러리나 유틸등을 워크스페이스로 묶어주면 좀더 편하고 쉽게 개발 할 수 있습니다.
*1) 여기서 말하는 프로젝트는 업무 즉 개발 프로젝트를 말합니다.
'Mobile > iPhone / Xcode' 카테고리의 다른 글
[iOS] Pull down to refresh (0) | 2011.10.03 |
---|---|
[iOS] 아이폰 SMS 말풍선을 만들어 보기 (1) | 2011.09.24 |
[iOS] Using Open Source Static Libraries in Xcode 4 (0) | 2011.09.16 |
[iOS] 프로젝트 템플릿 (링크) (0) | 2011.09.12 |
[Xcode] XCode4 Release, Debug 전환 (0) | 2011.09.12 |
트랙백
댓글
글
출처 : http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/
'Mobile > iPhone / Xcode' 카테고리의 다른 글
[iOS] 아이폰 SMS 말풍선을 만들어 보기 (1) | 2011.09.24 |
---|---|
[iOS] 프로젝트를 묶는 논리적 개념 Workspace (0) | 2011.09.17 |
[iOS] 프로젝트 템플릿 (링크) (0) | 2011.09.12 |
[Xcode] XCode4 Release, Debug 전환 (0) | 2011.09.12 |
[iOS] iOS에서는 보안상의 이유로 dynamic library Project를 만들수 없습니다. (0) | 2011.09.12 |
트랙백
댓글
글
-- 문자열 자르기 함수 -- 문자열 인덱스는 1부터 시작이다. -- 예 : ABCDEF 에서 AB를 추출할려면 SUBSTRING('ABCDEF', 1, 2) SUBSTRING(문자열, 시작인덱스, 자를문자열개수)
'DB / NoSQL > MSSQL' 카테고리의 다른 글
[MSSQL] 언어 타입 변경하기 (0) | 2012.04.20 |
---|---|
[MSSQL] SQL Server Management Studio 단축키 (0) | 2012.04.04 |
[MSSQL] CONVERT TYPE 0~200 (0) | 2011.09.28 |
[MSSQL] Oracle과 비슷한 RowNum (0) | 2011.09.06 |
[MSSQL] Alter Table (0) | 2011.09.02 |
트랙백
댓글
글
문맥전환이라...
이 말을 들어본건 학교 수업시간의 운영체제론을 배울때 였다.
영어 발음 그대로 사용하는데 도통이해가 가지 않았다.
요즘 컴퓨터(Intel 계열)는 멀티프로세싱과 멀티스레딩을 동시에 지원한다.
어떻게 CPU는 하나 밖에 없는데(물론 요즘은 멀티코어이지만 설명을 위해서 1개라고 가정하자) 동시에 여러프로그램을
사용 할 수 있을까
결론 부터 이야기 하자면 동시에 여러프로그램이 돌아가는것이 아니라 가는것처럼 보이는 것이다.
CPU의 타임슬라이스를 통해서 프로그램을 짧게 짧게 돌려가며 실행하는것이다.
그럼 1개의 프로그램을 주주창잘 돌리고 다음 프로그램을 돌리는게 프로그램 전환시간도 줄고 더 낫지 않을까?
물론 단순하게 생각하면 그 말이 맞다.
그리나 여러사람들이 관찰한 결과 컴퓨터의 대부분은 io(Input, Output)으로 시간을 보낸다고 한다. 결국 놀면서 보낸다.
실제로 CPU 작업관리자를 띄워도 대부분 시간 idle상태로 있는것을 알수 있다.
결국 이 노는 시간을 이용해서 여러프로그램을 돌리는게 더 낫다는 것이다
말이 이상하게 돌아갔는데 결국 Context Switching은 프로세싱에서 프로세싱으로 스레드에서 스레드로 전환할때
기존의 작업상태를 저장하고 새로운 작업상태를 읽는 작업을 말한다.
그런데 이 작업이 CPU부하가 꽤 걸리는 작업이라 이것도 많이 실행하면 배보다 배꼽이 큰상황(노는 IO작업을 이용하는
비용보다 문맥전환 비용이 더큰상황)이 발생해서 멀티프로세싱이나 멀티스레드를 적게하는 방향으로 발전하고 있다.
ps. 제가 아는 짧은 지식을 올린것으로 정확하지 않을 수 있습니다. 혹 정정해야 할 내용이 있다면 리플 부탁드립니다.
'일반' 카테고리의 다른 글
[정규표현식] 요약 (0) | 2012.02.15 |
---|---|
Library와 Framework의 차이점 (1) | 2011.10.21 |
[객체지향] 비슷한것 같으면서도 다른 Attribute와 Property의 차이점 (0) | 2011.05.19 |
RFP ( Request for Proposal ) (0) | 2011.04.07 |
객체지향 원리 (0) | 2011.02.18 |
트랙백
댓글
글
'Mobile > iPhone / Xcode' 카테고리의 다른 글
[iOS] 프로젝트를 묶는 논리적 개념 Workspace (0) | 2011.09.17 |
---|---|
[iOS] Using Open Source Static Libraries in Xcode 4 (0) | 2011.09.16 |
[Xcode] XCode4 Release, Debug 전환 (0) | 2011.09.12 |
[iOS] iOS에서는 보안상의 이유로 dynamic library Project를 만들수 없습니다. (0) | 2011.09.12 |
[iOS] 아이폰 초성 검색 클래스를 만들어 보자 (0) | 2011.09.10 |
트랙백
댓글
글
Product -> Edit scheme 에서 info의 Build Configuration에서 변경해 주면된다.
단축키는 "Command+<" 이다.
'Mobile > iPhone / Xcode' 카테고리의 다른 글
[iOS] Using Open Source Static Libraries in Xcode 4 (0) | 2011.09.16 |
---|---|
[iOS] 프로젝트 템플릿 (링크) (0) | 2011.09.12 |
[iOS] iOS에서는 보안상의 이유로 dynamic library Project를 만들수 없습니다. (0) | 2011.09.12 |
[iOS] 아이폰 초성 검색 클래스를 만들어 보자 (0) | 2011.09.10 |
[iOS] Objective-C Singleton 만들기 (2) | 2011.09.04 |
트랙백
댓글
글
[iOS] iOS에서는 보안상의 이유로 dynamic library Project를 만들수 없습니다.
설정
그럴때 가장 쉽게 하는 방법은 기존 파일을 복사하는 방법입니다.
거기에 한단계 나아가면 자신만의 라이브러리를 만들게 됩니다.
iOS상에서 static library는 만들어 지는데 dynamic library를 어떻게 만들지 몰라서
찾아보니 보안상의 이유로 안된다는 군요.
출처 :http://stackoverflow.com/questions/4733847/can-create-dynamic-library-for-ios
'Mobile > iPhone / Xcode' 카테고리의 다른 글
[iOS] 프로젝트 템플릿 (링크) (0) | 2011.09.12 |
---|---|
[Xcode] XCode4 Release, Debug 전환 (0) | 2011.09.12 |
[iOS] 아이폰 초성 검색 클래스를 만들어 보자 (0) | 2011.09.10 |
[iOS] Objective-C Singleton 만들기 (2) | 2011.09.04 |
[iOS] iOS5 Beta 7에서는 Window-Based Application가 없어졌습니다. (0) | 2011.09.04 |
트랙백
댓글
글
인터넷에서 유니코드 한글 위치와 초성 중성 종성을 찾는 알고리즘을 찾았는데 브라우져를 꺼버렸네요 ㅠㅠ
암튼 위의 이미지를 참조해서 아이폰에서 사용할 요량으로 만들어 봤습니다.
알고리즘에 오타 문제가 있습니다.
초성부분에 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]; }
'Mobile > iPhone / Xcode' 카테고리의 다른 글
[Xcode] XCode4 Release, Debug 전환 (0) | 2011.09.12 |
---|---|
[iOS] iOS에서는 보안상의 이유로 dynamic library Project를 만들수 없습니다. (0) | 2011.09.12 |
[iOS] Objective-C Singleton 만들기 (2) | 2011.09.04 |
[iOS] iOS5 Beta 7에서는 Window-Based Application가 없어졌습니다. (0) | 2011.09.04 |
[iOS] UIButton의 alpha 값에 따른 이벤트 유무 (0) | 2011.08.16 |
트랙백
댓글
글
* eclipse indigo 기준 입니다.
'IDE/Tool > Eclipse' 카테고리의 다른 글
[Eclipse] 이클립스 속도향상 설정 (0) | 2011.10.25 |
---|---|
[Eclipse] eclipse에서 .jsp 파일을 작성할때 실제 .java 파일 생성 위치 (0) | 2011.10.07 |
[Eclipse] 세로모드 사용하기 (컬럼) (0) | 2011.08.31 |
[Eclipse] 탭을 공백으로 변환하기 Insert Spaces for tabs (0) | 2011.08.31 |
[Eclipse] eclipse 파일검색 방법 (1) | 2011.08.18 |
트랙백
댓글
글
-- 예제 -- MSSQL 2000이하에서는 안된다네요. SELECT ROW_NUMBER() OVER( ORDER BY columnname ) AS ROWNUM FROM tablename
성능상의 문제가 있다고 하는데 우선 급한데로 유용하게 써먹을 수 있을 것 같다.
'DB / NoSQL > MSSQL' 카테고리의 다른 글
[MSSQL] 언어 타입 변경하기 (0) | 2012.04.20 |
---|---|
[MSSQL] SQL Server Management Studio 단축키 (0) | 2012.04.04 |
[MSSQL] CONVERT TYPE 0~200 (0) | 2011.09.28 |
[MSSQL] 문자열 자르기 (0) | 2011.09.15 |
[MSSQL] Alter Table (0) | 2011.09.02 |
트랙백
댓글
글
@interface AddressBookModel : NSObject { NSMutableArray *aData; } @property (nonatomic, retain) NSMutableArray *aData; +(AddressBookModel *)sharedInstance; +(void)killInstance; -(NSString*)print; @end
// AddressBookModel.m
static AddressBookModel *_addressBookModelSingleInstance = nil; @implementation AddressBookModel : NSObject @synthesize aData; -(NSString*)print { NSMutableString *str = [NSMutableString string]; for (int i = 0; i < [aData count]; i++ ) { [str appendFormat:@"%@ ", [aData objectAtIndex:i]]; } return str; } -(id)init { self = [super init]; if ( self != nil ) { // 데이터 초기화 장소 self.aData = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", nil]; } return self; } -(void)dealloc { NSLog(@"AddressBookModel dealloc=>Ref Count=%d", [self retainCount]); [aData release]; [super dealloc]; } +(AddressBookModel *)sharedInstance { @synchronized(self) { if ( _addressBookModelSingleInstance == nil ) { _addressBookModelSingleInstance = [[AddressBookModel alloc] init]; NSLog(@"AddressBookModel sharedInstance=>Ref Count=%d", [_addressBookModelSingleInstance retainCount]); } } return _addressBookModelSingleInstance; } +(void)killInstance { @synchronized(self) { if (_addressBookModelSingleInstance != nil ) { [_addressBookModelSingleInstance dealloc]; _addressBookModelSingleInstance = nil; } } } +(id)allocWithZone:(NSZone *)zone { @synchronized(self) { if (_addressBookModelSingleInstance == nil) { _addressBookModelSingleInstance = [super allocWithZone:zone]; return _addressBookModelSingleInstance; } } return nil; } -(id)copyWithZone:(NSZone *)zone { return self; } -(id)retain { return self; } -(unsigned)retainCount { return UINT_MAX; } -(oneway void)release { } -(id)autorelease { return self; } @end인터넷을 뒤지니까 대략 비슷한 소스코드가 쏟아집니다.
다른 문제는 다 해결됐는데 아무리 디버깅을 해봐도 dealloc 메소드가 호출되지 않네요.
결국 'killInstance'라는 클래스 메소드를 만들어서
내부에서 강제로 dealloc를 호출해주고 있습니다.
결국 문제는 싱글턴 만드는 것 까지는 좋은데 dealloc같이 메모리가 정확하게 해제되는 시점이 필요하다는 것입니다.
그렇지 않다면 메모리 해제시에 특정 작업을 처리 할 수가 없는 일이 발생하기 때문에 특정상황에서 애매해지는 일이 발생합니다.
전 억지로 killInstance라는 클래스 메소드를 만들었는데
혹 다른 방법을 알고있으시다면 알려주세요 ㅠㅠ
'Mobile > iPhone / Xcode' 카테고리의 다른 글
[iOS] iOS에서는 보안상의 이유로 dynamic library Project를 만들수 없습니다. (0) | 2011.09.12 |
---|---|
[iOS] 아이폰 초성 검색 클래스를 만들어 보자 (0) | 2011.09.10 |
[iOS] iOS5 Beta 7에서는 Window-Based Application가 없어졌습니다. (0) | 2011.09.04 |
[iOS] UIButton의 alpha 값에 따른 이벤트 유무 (0) | 2011.08.16 |
[iOS] Rounded Rect View + ActivityIndecator (0) | 2011.08.14 |
트랙백
댓글
글
그런데 우잉???
Windows-Based Application이 없어졌네요.
그래서 할 수 없이 Empty Application을 선택했습니다.
그리고 새로운 Use Automatic Reference Counting이라는 항목이 생겼군요. 레퍼런스 카운팅을 자동으로 해주는 것 같은데
우선 테스트 어플이 급하기에 체크 해제하고 생성합니다.
TestApp이라는 이름으로 어플을 생성했습니다.
Empty Application이라더니 기존에 있던 MainWindow.xib 파일이 보이지 않습니다.
그럴때는 할 수 없이 수동으로 연결을 해야 하는 군요.
새로운 UIViewController를 하나 만들었습니다.
xib파일을 포함해서 만들었는데요. 이제 코드로 연결을 해줘야 합니다.
Empty Application 으로 만들면 'AppDelegate.h, AppDelegate.m'파일이 생성됩니다.
// AppDelegate.h
// @property (strong, nonatomic) UIWindow *window; @property (nonatomic, retain) MainViewController *mainView; @end //]]>
//AppDelegate.m
#import "AppDelegate.h" #import "MainViewController.h" @implementation AppDelegate @synthesize window = _window; @synthesize mainView; - (void)dealloc { [mainView release]; [_window release]; [super dealloc]; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; mainView = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]; if ( mainView != nil ) { [self.window addSubview:mainView.view]; } [self.window makeKeyAndVisible]; return YES; } // 이하 코드 ...
이렇게 연결을 했더니 전과 같이 화면이 밀리는 경향이 있습니다.
그래서 MainViewController.m 파일을 수정했습니다.
// MainViewController.m
#import "MainViewController.h" @implementation MainViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization [self.view setFrame:[[UIScreen mainScreen] applicationFrame]]; } return self; } // 이하 코드 ...
'Mobile > iPhone / Xcode' 카테고리의 다른 글
[iOS] 아이폰 초성 검색 클래스를 만들어 보자 (0) | 2011.09.10 |
---|---|
[iOS] Objective-C Singleton 만들기 (2) | 2011.09.04 |
[iOS] UIButton의 alpha 값에 따른 이벤트 유무 (0) | 2011.08.16 |
[iOS] Rounded Rect View + ActivityIndecator (0) | 2011.08.14 |
[iOS] Animation되는 Tabbar를 만들어보자 (0) | 2011.08.08 |
트랙백
댓글
글
-- 컬럼수정 ALTER TABLE TZ_FRIENDS ALTER COLUMN FRIENDID VARCHAR(20) NOT NULL; -- 외래키는 바로 변경 안되고 Drop후 다시 생성 -- 삭제 ALTER TABLE TZ_FRIENDS DROP XPK_FRIEND -- 생성 ALTER TABLE TZ_FRIENDS ADD CONSTRAINT XPK_FRIEND FOREIGN KEY(...) REFERENCES(...)
'DB / NoSQL > MSSQL' 카테고리의 다른 글
[MSSQL] 언어 타입 변경하기 (0) | 2012.04.20 |
---|---|
[MSSQL] SQL Server Management Studio 단축키 (0) | 2012.04.04 |
[MSSQL] CONVERT TYPE 0~200 (0) | 2011.09.28 |
[MSSQL] 문자열 자르기 (0) | 2011.09.15 |
[MSSQL] Oracle과 비슷한 RowNum (0) | 2011.09.06 |
트랙백
댓글
글
2. 출판사 : 영진닷컴
3. 저 자 : 유키 히로시 저
4. 가 격 : 25,000원
5. 난이도 : 초중급 (★★★☆☆)
7. 평 가 : ★★★★★
몇 권 보지 않은 디자인패턴 책이지만 디자인패턴이라고 본책중에 개인적으로 제일 이해하기 쉬운 책입니다.
이 책은 총 10부로 구성되어 있는데 저는 천천해 보려고 하루에 한부씩 읽었습니다.
디자인 패턴 책을 보다 보면은 제일 어려운게 그 패턴이 그 패턴 같으면서 도대체 언제 어떤 패턴을 적용할지
감이 안온다는 것 입니다.
그건 책으로 해결될 문제는 아니라고 봅니다.
이론과 실전은 다르기에 결국 경험에 의해서 필요성이 생기는 것 같습니다.
그렇지만 그런 부분을 뒤로하고서라도 이책은 충분히 가치가 있습니다.
책을 읽다보면은 디자인패턴을 통해서 객체지향의 묘미에 대해서 충분히 느낄수 있고 객체지향적으로
잘 구조화 해서 개발을 해보고 싶다는 욕구가 충만해 집니다.
이 책을 읽고 꼭 패턴이 뭐다라기 보다 왜 객체지향으로 해야 하는가
결국 현대에 와서 개발보다는 유지보수의 비용 더 크다는걸 깨닿고 유지보수를 쉽게 하는 방법으로 발전하게되면서
객체지향이라는게 각광받고 있는 거라고 생각합니다.
이 책도 인터페이스를 통한 느슨한 결합으로 유지보수와 확장에 자유로는 코드를 만들려고 하는게
모든 패턴에 깔려있다는걸 알려줍니다.
자바 언어를 바탕으로 디자인 패턴을 설명하고 있지만 C, C++ 개발자가 보아도 크게 문제 없습니다.
기존 GoF책이 어려우신 분은 이 책을 시작으로 다른 책을 접근해 보시는 것도 한가지 방법이라고 생각합니다.
'Books' 카테고리의 다른 글
High Performance Javascript 자바스크립트 성능 최적화 (0) | 2011.12.20 |
---|---|
거꾸로 배우는 소프트웨어 개발 (0) | 2011.10.27 |
아이폰 프로그래밍 UIKit 핵심 바이블 (0) | 2011.08.15 |
렛츠 고! iOS 4 애플리케이션 개발 (0) | 2011.06.24 |
패턴 그리고 객체지향적 코딩의 법칙 (0) | 2011.06.22 |
RECENT COMMENT