본문 바로가기

전체

(325)
[iOS] init 1. init 함수- NSObject 자식 중 일반 클래스 : init- viewController : [[MyVC alloc] initWithNibName]로 생성- GUI 클래스 =>코드로 생성 : [[MyView alloc] initWithFrame:rc]; =>xib로 생성 : [[MyView alloc] initWithCoder]로 초기화 2. 샘플 코드ViewController.xib의 뷰를 MyView로 설정하고 MyView에 아래 코드 작성 @implementation MyView-(instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { str=@"hello"; NSLog(@"MyVie..
[iOS] xib와 strong, weak 기본적으로 xib 뷰 안에 있는 객체들을 IBOutlet으로 끌어오면 weak로 설정된다.이 이유는 뷰가 객체들을 잡고 있기 때문에 뷰가 dealloc되지 않는 한 안의 객체들이 dealloc되지 않기 때문이다.따라서 뷰 밖에다 일반 객체등을 끌어놓고 IBOutlet으로 끌어와보면 strong으로 설정된다.이 객체들은 따로 붙잡아 두고 있을 상위 객체가 없기때문에 사용하지 않는 순간 dealloc된다.assign커맨드를 쓰게 되면 포인터 nil초기화를 컴파일러가 따로 해주지 않기 떄문에 weak로 사용해야 한다.(memory leak)
[Objective-C] 지연된 초기화 1. 지연된 초기화property는 실제 객체를 사용할 때 초기화 된다.그래서 객체의 init시점에서 찍어보면 nil값이 나오고self.객체 등으로 getter를 호출하면 그 때 메모리 주소 값이 찍힌다.대표적인 예가 self.view아이폰 라이브러리 대부분이 지연된 초기화 기법을 사용한다. 2. 샘플 코드 @interface Car : NSObject@property (strong, nonatomic) NSArray* arr; @end @implementation Car-(NSArray*) arr // getter{ NSLog(@"getter"); if(_arr == nil) { _arr = [NSArray arrayWithObjects:@"사과", nil]; NSLog(@"arr 자원 주소 : %p"..
이메일 영어 표현 1. FYI전달할때 저렇게 쓰길래 뭔가 했더니For Your Information이었다. 2. CC참조라고 쓰던데 Carbon Copy카본은 탄소인데 탄소 복사? 뭔가 뜻이 이상해서 영어사전 찾아보지카본지로 만든 복사본(깜지 말하는 듯)혹은 판박이 라는 의미다. 3. ​BCC​숨은 참조 Blind Carbone Copy숨은거라서 Blind 4. BR이메일 말미에 쓰는거Best Regards BR, 내이름
[iOS] Xib Xib가 로드 될때 만약 Xib에 일반 객체가 있고 그 클래스를 코드와 연동해 두면 Xib 로드 시 객체도 초기화 된다. 단순히 뷰를 로드하기 위한 파일은 아니다.
[iOS] 눈내리는 애니메이션 만들기 UIImage* img = [UIImage imageNamed:@"bg_message.9.png"]; UIImageView* imgView = [[UIImageView alloc ]initWithImage:img]; imgView.center = CGPointMake(rand()%320, 0); [self.view addSubview:imgView]; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:2]; imgView.center = CGPointMake(rand()%320, 480); [UIView commitAnimations]; //[self finish:imgView]; //특정함수를2초뒤 [self performSe..
[iOS] 뷰의 sub뷰 가져오기 NSArray* arr =vc.view.subviews; // 뷰 안에 서브뷰들을 배열로 가져옴 for(UIView* v in arr) { Class c = [v class]; NSLog(@"%@",NSStringFromClass(c)); if([v isKindOfClass:[UIButton class]]) // 서브뷰가 버튼이라면 { UIButton* btn = (UIButton*)v; NSString* title = btn.titleLabel.text; if ([title isEqualToString:@"btn1"]) // 버튼 타이틀이 btn1이라면 { [btn addTarget:self action:@selector(foo) forControlEvents:UIControlEventTouchUpIn..
[iOS] 구조 1. main.m맨 처음 파일wizard는 여기서 UIApplicationMain 함수를 반환한다. 2. UIApplicationMain 함수App과 관련된 delegate 함수를 받을 수 있는 클래스를 설정 함(기본적으로 wizard에서는 AppDelegate라고 만들어준다. 그래서 마지막인자를 AppDelegate class의 string으로 받는것) 3. AppDelegateUIApplication 객체가 보내는 이벤트를 처리할 객체NSObject가 아니라 NSResponder를 상속받음(제스쳐 관련 이벤트)UIApplicationDelegate 프로토콜을 구현한다. 4. 구조5. 코드로 viewController 호출하는 법 AppDelegate의 application: didFinishLaunc..