objective c 기초


=============== 반환값, 파라미터가 객체일때 표기법

  • 반환값, 파라미터가 객체 : 클래스 이름과 * 을 사용한다.

    - (NSString *)uppercaseString;

  • 구조체: * 없이 사용

    - (NSRange)rangeOfString:(NSString *)aString; 


=============== 객체 생성하기


#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {

   @autoreleasepool {

      

      NSObject *obj1 = [[NSObject alloc] init]; // 반환값이 객체이기 때문에 *변수 사용.

      NSLog(@"Object : %@", obj1);

      

              NSObject *obj2 = obj1;

      NSLog(@"Obj2 : %@", obj2);


   }

    return 0;

}


=============== 지역변수 전역변수

ViewController.h

#import <UIKit/UIKit.h>


@interface ViewController : UIViewController


@property (nonatomic,strong) NSString *name;


@end


ViewController.m

#import "ViewController.h"


@interface ViewController ()


@property(nonatomic, strong) NSString *vehicle;


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];


    NSLog(@"이름: %@" , self.name);

    

    self.name = @"anna";

    

    NSLog(@"이름: %@" , self.name);

    

    _name = @"bob";

    

    NSLog(@"이름: %@" , _name);

    

    [self setName:@"cant"];

    

    NSLog(@"이름: %@", [self name]);

    

}


출력

ObjectiveCAlert[1414:212708] 이름: (null)

2018-07-28 10:51:53.207975+0900 ObjectiveCAlert[1414:212708] 이름: anna

2018-07-28 10:51:53.208148+0900 ObjectiveCAlert[1414:212708] 이름: bob

2018-07-28 10:51:53.208421+0900 ObjectiveCAlert[1414:212708] 이름: cant


======================= 지역변수 전역변수

Person.h

#import <Foundation/Foundation.h>


@interface Person : NSObject

{

    //지역변수라서 같은 클래스 안에서 만 접근가능하다.

    BOOL isInsecure;

}


//전역변수라서 어디에서든 접근가능하다.

@property (nonatomic,strong) NSString *firstName;

@property (nonatomic,strong) NSString *lastName;


//전역메서드 - 이곳에 작성안해주면 viewcontroller 즉 다른 클래스에서 접근할 수 없다.!

-(void)test;



@end



Person.m

#import "Person.h"


@implementation Person


-(void)test{

    

    self.firstName = @"bob";

    

    _firstName = @"jack";

    

    isInsecure = YES; //지역변수라서 접근가능

    

    [self setLastName: @"davis"];

    

    NSString *name = [self firstName];

    NSString *nicname = [self lastName];

    

    NSLog(@"이름: %@ - 닉네임: %@",name,nicname); //이름: jack - 닉네임: davis

}


@end


ViewController.h

#import <UIKit/UIKit.h>


@interface ViewController : UIViewController


@end

ViewController.m

#import "ViewController.h"

#import "Person.h" //import 해준다!

@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];


    Person *person1 = [[Person alloc]init]; //객체 생성 및 초기화


    person1.firstName = @"kang"; //변수 할당


    [person1 setLastName:@"gil dong"]; // 변수할당

    

    //person1.isInsecure = NO; 지역변수라서 다른 클래스에서 접근 불가능

    

    //NSLog(@"%@", person1.firstName); //kang

    //NSLog(@"%@", person1.lastName); //gil dong

   

    [person1 test]; //이름: jack - 닉네임: davis


}


@end


======================= setter getter 활용법


Vehicle.h

#import <Foundation/Foundation.h>


@interface Vehicle : NSObject


@property (nonatomic) long odomater;


@property (nonatomic,strong) NSString *model; //포인터 변수


@end


Vehicle.m

#import "Vehicle.h"


@implementation Vehicle


//셋터구현 - 불필요한 값을 검증하기 위해 사용되는 예

-(void)setOdomater:(long)odomater{

    if(odomater > _odomater){ //원래 값이 입력한 값 보다 크면

        _odomater = odomater;

    }

}


-(NSString *)model{

    if([_model isEqualToString:@"honda"]){

        return @"oh no~~~";

    }else{

        return _model; //입력한 값

    }

}


@end


ViewController.h

#import <UIKit/UIKit.h>


@interface ViewController : UIViewController


@end


ViewController.m

#import "ViewController.h"

#import "Vehicle.h"

@interface ViewController ()

@end


@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];


    Vehicle *car = [[Vehicle alloc]init];

    

    //section1

    /*

    car.odomater = -100;

    NSLog(@"odometer: %lu", car.odomater); //0

    

    car.model = @"honda";

    NSLog(@"나는 %@ 를 운전합니다." , car.model); //나는 oh no~~~ 를 운전합니다.

     */

    

    //section2

    car.odomater = 100;

    NSLog(@"odometer: %lu", car.odomater); //100

    

    car.model = @"ferari";

    NSLog(@"나는 %@ 를 운전합니다." , car.model); //나는 ferari 를 운전합니다.

}

@end



======================= NSString

#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    NSString *firstName = @"John";

    NSString *allocatedString = [[NSString alloc]init];

    

    NSLog(@"name: %@", firstName); //name: John

    

    NSString *fullName = [NSString stringWithFormat:@" %@ smith %@",firstName , @"Charles the III"];

    

    NSString *display = [fullName stringByAppendingString: @" - Died 1448"];

    

    NSLog(@"fullName: %@", fullName); //fullName:  John smith Charles the III

    

    NSLog(@"display: %@", display); //display:  John smith Charles the III - Died 1448

   

    

    

    NSString *var1 = @"Junk";

    NSString *var2 = @"in the trunk";

    NSString *var3 = @"junk";

    

    if(![var1 isEqualToString:var2]){

        NSLog(@"var1 과 var2 는 같지 않습니다."); //var1 과 var2 는 같지 않습니다.

    }

    

    if([var1.lowercaseString isEqualToString: var3]){

        NSLog(@"var1 과 var3은 같습니다. -1"); //var1 과 var3은 같습니다. -1

    }

    

    if([var1 caseInsensitiveCompare:var3] == NSOrderedSame){

        NSLog(@"var1 과 var3은 같습니다. -2" ); //var1 과 var3은 같습니다. -2

    }

    

    

    

    //초기화

    //NSString *str = [[NSString alloc]initWithString:@"This is NSString"];


    //간소하게

    NSString *str = @"This is NSString";

    NSLog(@"str : %@",str); //This is NSString

    

    //immutable class - 변경 불가

    NSString *result;


    result = [str substringFromIndex:6]; //6번째 문자열 이후의 문자열 출력 NSString

    result = [str substringToIndex:3]; // 앞에서 3번째 문자열 까지 출력 Thi

    

    result = [[str substringToIndex:11]substringFromIndex:8];   // NSS

    result = [[str substringFromIndex:8] substringToIndex:3];   // NSS

    

    result = [[str substringWithRange:NSMakeRange(8, 3)] lowercaseString];  //nss

    

    NSLog(@"result : %@", result);

    


    //mutable - 변경가능

    NSMutableString *mstr = [NSMutableString stringWithFormat: str];

    [mstr appendString: @" and NSMutableString"];

    [mstr insertString:@"Mutable " atIndex:8];

    NSLog(@"mstr : %@", mstr); //his is Mutable NSString and NSMutableString


    

}



@end


======================= NSNumber

#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    int imAnIn = 5;

    float iAmFloat = 3.3;

    double iAmTheDouble = 5.666664;

    

    NSLog(@"Int: %d", imAnIn);

    NSLog(@"iAmFloat: %f", iAmFloat);

    NSLog(@"iAmTheDouble: %f", iAmTheDouble);

    

    //NSNumber 초기화

    NSNumber *numInt = [NSNumber numberWithInt:5];

    NSNumber *numInt2 = [NSNumber numberWithInt:6];

    

    //int로 형변환

    int val = numInt.intValue;

    int val2 = numInt2.intValue;

    

    int sum = val + val2;

    

    NSLog(@"sum : %d",sum);

    

    //NSNumber로 형변환

    NSNumber *numSum = [NSNumber numberWithInt:sum];

    

    //배열에 담기

    NSArray *arr = @[numInt, numInt2, numSum];


    //numSum을 스트링 타입으로 변환

    NSString *str = numSum.stringValue;

    

    

    NSInteger someInt = 55;

    

    //오류

   //NSNumber *sumNum = [numInt intValue] * [numInt2 intValue];

    NSNumber *sumNum = [NSNumber numberWithInt:(numInt.intValue) * (numInt2.intValue)];

    NSLog(@"sumNum : %@",sumNum); //30

    

}


@end



======================= 클래스 메서드, 인스턴스 메서드



person.h

#import <Foundation/Foundation.h>


@interface Person : NSObject


- (void)speakName;

+ (void)stateSpecies;



@end


person.m

#import "Person.h"


@implementation Person



- (void)speakName{

    NSLog(@"my name is jack!");

}


+ (void)stateSpecies{

    NSLog(@"i am a human");

}



@end


ViewController.h

#import <UIKit/UIKit.h>


@interface ViewController : UIViewController


@end


ViewController.m

#import "ViewController.h"

#import "Person.h"

@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    Person *person =[[Person alloc]init];

    

    [person speakName];         //인스턴스 메서드 (-) my name is jack!


    [Person stateSpecies];     //클래스 메서드 (+) i am a human

    

}


@end



======================= 메서드 체인 (예) - 위에 코드와 아래 4줄 코드는 같다.



======================= swift를 objective c로 변환해보기



#import "ViewController.h"

#import "Person.h"

@interface ViewController ()

@property (nonatomic) double bankAccount;

@property (nonatomic) double itemAmount;

@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    self.bankAccount =  500.0;

    self.itemAmount = 400.0;

    

    //실행

    [self playground];

    //살 수 있음!

    //player b wins!

}


//구입가능여부 체크

- (BOOL) canPurchase: (double) amount {

    if(self.bankAccount >= amount){

        return YES;

    }

    return NO;

}



//우승자 선정 함수

- (void) declareWinnerWithPlayerAScore:(NSInteger)scoreA playerBScore:(NSInteger)scoreB{

    if(scoreA > scoreB){

        NSLog(@"player a wins!");

    }else if(scoreB > scoreA){

         NSLog(@"player b wins!");

    }else{

         NSLog(@"again");

    }

}



//실행 함수

- (void) playground{

    //구입 여부 함수 호출

    if([self canPurchase:self.itemAmount]){

        NSLog(@"살 수 있음!");

    }

    

    //우승자 선정 함수 호출

    [self declareWinnerWithPlayerAScore:55 playerBScore:66];

    

}



@end




======================= 고정배열, 가변 배열

#import "ViewController.h"

#import "Person.h"

@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    NSArray *arr = [NSArray arrayWithObjects:@"my", @"mother", @"told", @"me", nil];

    NSArray *arr2 = @[@"donkey",@"kong" , @"ate", @"your", @"mom"];

    NSString *str = [arr objectAtIndex:2];

    NSLog(@"str : %@",str); //str : told

    

    arr = @[@"mario" , @"hahahoho"]; //재할당;

    NSLog(@"arr num %li", arr.count); //2

    

    // 가변 배열 ---------------------------------------

    

    NSMutableArray *mut = [NSMutableArray arrayWithObjects:@"boom",@"jam",@"slam",@"pam", nil];

    NSLog(@"mut: %@", mut.debugDescription);

    /*

     (

     boom,

     jam,

     slam,

     pam

     )

     */

    

    //삭제

    [mut removeObjectAtIndex:2];

    //삽입

    [mut addObject: @"beast master"];

    

    NSLog(@"mut 2: %@", mut.debugDescription);

    /*(

    boom,

    jam,

    pam,

    beast master

    )*/

    

    NSArray *arr3 = [NSArray arrayWithArray:arr];

    NSArray *arr4 = mut;

    

    //NSMutableArray *arr4 = arr; 오류

    

    //

    NSArray *frutie = [[NSArray alloc]initWithObjects:@"apple",@"banana", @"pineapple", @"lemon", nil];


    /* for 문 예제 1

     for (int i = 0; i< [frutie count]; i++){

     NSLog(@"frute : %@", [frutie objectAtIndex:i]);

     }

     */


    //for 문 예제2

    for (NSString *strTemp in frutie) {

        NSLog(@"과일1 : %@" , strTemp);

    }

    


    //가변 array

    //할당

    NSMutableArray *ffrute = [NSMutableArray arrayWithArray:frutie];

    

    [ffrute addObject:@"tomato"];

    [ffrute addObject:@"wotermelon"];

    [ffrute addObject:@"mango"];

    

    for (NSString *strTemp in ffrute){

        NSLog(@"과일2 : %@", strTemp);

    }


}


@end



======================= 딕셔너리

#import "ViewController.h"

#import "Person.h"

@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    //dictionary

    NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"강", @"이름", @"20", @"나이", nil];

    

    NSLog(@"name : %@" , [dic objectForKey:@"이름"]);

    NSLog(@"age : %@" , [dic objectForKey:@"나이"]);

    

    //가변 dictionary

    NSMutableDictionary *mdic = [NSMutableDictionary dictionaryWithDictionary:dic];

    

    [mdic setObject:@"한국" forKey:@"사는곳"];

    [mdic setObject:@"까무잡잡" forKey:@"얼굴색"];

    NSLog(@"location : %@" , [mdic objectForKey:@"사는곳"]);

    NSLog(@"face color : %@" , [mdic objectForKey:@"얼굴색"]);

    

    //-----------------------------------------------------------------------------

    

    

    NSNumber *age = [NSNumber numberWithInt:40];

    NSNumber *age2 = [NSNumber numberWithInt:34];

    

    NSDictionary *dic1 = @{@"jack":age, @"jon:":age2};

    NSDictionary *dic2 = [[NSDictionary alloc]init];

    

    int jacksAge = [[dic1 objectForKey: @"jack"] intValue];

    

    NSNumber *age3 = [dic1 objectForKey:@"jack"];

    int jacksAge2 = [age3 intValue];

    

    

    NSLog(@"jacks age : %d",jacksAge); //jacks age : 40


    NSMutableDictionary *mut = [@{@"1":@"bmv",@"2":@"volvo",@"3":@"ugly"} mutableCopy];

    NSLog(@"%@",mut);

    /*

     {

     1 = bmv;

     2 = volvo;

     3 = ugly;

     }

     */

    

    NSMutableDictionary *mut2 = [[NSMutableDictionary alloc]init];

    

    [mut2 setObject:@"an object" forKey:@"a key"];

    [mut2 setObject:[NSNumber numberWithDouble:20.000] forKey:@"doubletrouble"];

    

    NSLog(@"%@",mut2);

    /*

     {

     "a key" = "an object";

     doubletrouble = 20;

     }

     */

}




@end


======================= 객체지향 예 1

Vehicle.h

#import <Foundation/Foundation.h>


@interface Vehicle : NSObject

//부모 프로 퍼티

@property (nonatomic,strong) NSString *make;

@property (nonatomic,strong) NSString *model;

@property (nonatomic,strong) NSString *engineSize;

-(void)drive;

@end


Vehicle.m

#import "Vehicle.h"


@implementation Vehicle


//부모 메소드

-(void)drive{

    NSLog(@"i am driving");

}


@end


Civic.h

#import "Vehicle.h"


//Vehicle 의 서브 클래스

@interface Civic : Vehicle


-(void)test;

@end



Civic.m

#import "Civic.h"


@implementation Civic


//초기화

- (id)init

{

    if( self = [super init]){

    

    }

    

    //자신의 drive 호출

    [self drive];

    return self;

}


//여기에만 적어주면 이 클래스 안에서만 호출 가능. Civic.h에 적어주면 다른 클래스에서도 호출 가능!!!!

-(void) test{

    self.make = @"honda";

    self.model = @"civic";

}



-(void) drive {

    NSLog(@"drive from subclass");

    //부모 drive 호출

    [super drive];

}


@end



ViewController.m

#import "ViewController.h"

#import "Civic.h"

@interface ViewController ()

@property(nonatomic,strong) NSString *iAmPrivate;

@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];


    //객체생성

    Civic *civic = [[Civic alloc]init];

    

    

    // 호출 안해주면 밑에 nslog는 둘다 nil.., Civic.h에 구현 안해주면 이곳에서 호출 불가능..

    [civic test];

    

    //[civic drive];

    NSString *model = [civic model];

    NSString *make = [civic make];

    

    NSLog(@"make :  %@ " ,make); //make :  honda

    NSLog(@"model :  %@ " ,model); //model :  civic


}

@end








'ios 뽀개기 > objective-c' 카테고리의 다른 글

objective c 의 모든것  (5) 2018.07.28
objective c alert 구현  (0) 2018.07.28
객체지향 예제  (0) 2018.07.10
array dictionary  (0) 2018.07.10
NSString 예제  (0) 2018.07.09
if문 for문 switch문  (0) 2018.07.09
  1. 2018.09.10 10:52

    비밀댓글입니다

  2. 2018.09.10 16:10

    비밀댓글입니다

  3. 2018.09.28 14:50

    비밀댓글입니다

  4. 2018.10.05 08:48

    비밀댓글입니다

  5. 2018.10.11 17:01

    비밀댓글입니다

alert 구현






- (IBAction)alert:(id)sender {

    

    //팝업구현을 하는 클래스

    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"알림" message:@"환영합니다." preferredStyle:UIAlertControllerStyleAlert];

    

    //팝업 버튼 구현하는 클래스

    UIAlertAction *closeAction = [UIAlertAction actionWithTitle:@"닫기" style:UIAlertActionStyleCancel handler:nil];

    

    //팝업 클래스에 버튼을 넣는 메소드 호출

    [alert addAction:closeAction];

    

    //나타나게

    [self presentViewController:alert animated:YES completion:nil];

    

}

'ios 뽀개기 > objective-c' 카테고리의 다른 글

objective c 의 모든것  (5) 2018.07.28
objective c alert 구현  (0) 2018.07.28
객체지향 예제  (0) 2018.07.10
array dictionary  (0) 2018.07.10
NSString 예제  (0) 2018.07.09
if문 for문 switch문  (0) 2018.07.09

객체지향 예제


main.m

//

//  main.m

//  BookManager

//

//  Created by MacBookPro on 2018. 7. 10..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "Book.h"

#import "BookManager.h"


int main(int argc, const char * argv[]) {


    @autoreleasepool {


        Book *book1 = [[Book alloc]init];

        book1.name = @"햄릿";

        book1.genre = @"비극";

        book1.author = @"세익스피어";

        

        //[book1 bookPrint];

        

        Book *book2 = [[Book alloc]init];

        book2.name = @"누구를 위해 종은 울리나";

        book2.genre = @"전쟁소설";

        book2.author = @"헤밍웨이";

        

        Book *book3 = [[Book alloc]init];

        book3.name = @"죄와 벌";

        book3.genre = @"사실주의";

        book3.author = @"톨스토이";

    

        BookManager *myBook = [[BookManager alloc]init];

   

        //myBook 객체에 인스턴스 값 넣기

        [myBook addBook:book1];

        [myBook addBook:book2];

        [myBook addBook:book3];

        

        //모든책 구하기

        NSLog(@"%@",[myBook showAllBook]);

        //책의 개수 구하기

        NSLog(@"count : %li" , [myBook countBook]);

        

        //책찾기 값넣기

        NSString *strTemp = [myBook findBook:@"죄와 벌"];

        

        

        NSLog(@"\n");

        

        if(strTemp != nil){

            NSLog(@"%@", strTemp);

        }else{

            NSLog(@"찾으시는 책이 없네요~ ㅜ.ㅜ");

        }

        

        //책 삭제후

        NSString *removeResult = [myBook removeBook:@"죄와 벌"];

        if(removeResult != nil){

            NSLog(@"%@ 책을 지웠습니다.", removeResult);

        }else{

            NSLog(@"지울려는 책이 없네요...");

        }

        

        //모든책 구하기

        NSLog(@"%@",[myBook showAllBook]);

        

        //개수 구하기

        NSLog(@"count : %li" , [myBook countBook]);

        

    }

    return 0;

}



Book.h

//

//  Book.h

//  BookManager

//

//  Created by MacBookPro on 2018. 7. 10..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//

//book 모델

#import <Foundation/Foundation.h>


@interface Book : NSObject


//프로퍼티 선언, (옵션) 설정

@property (nonatomic, strong) NSString *name;

@property (nonatomic, strong) NSString *genre;

@property (nonatomic, strong) NSString *author;


-(void) bookPrint;


@end


Book.m

//

//  Book.m

//  BookManager

//

//  Created by MacBookPro on 2018. 7. 10..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//


#import "Book.h"


@implementation Book


//구현

@synthesize name, genre, author;


-(void)bookPrint{

    

    NSLog(@"Name : %@" , name);

    NSLog(@"Genre : %@" , genre);

    NSLog(@"Author : %@" , author);

}



@end


Bookmanager.h

//

//  BookManager.h

//  BookManager

//

//  Created by MacBookPro on 2018. 7. 10..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//


#import <Foundation/Foundation.h>


@class Book;

@interface BookManager : NSObject{

    //맴버변수

    NSMutableArray *bookList;

}


//책 객체 추가

-(void)addBook: (Book *)bookObject;


//모든 책들 보여주기

-(NSString *)showAllBook;


//책 개수 구하기

-(NSUInteger)countBook;


//책찾기

-(NSString *)findBook: (NSString *)name;


//책 삭제

-(NSString *)removeBook: (NSString *)name;



@end


Bookmanager.m

//

//  BookManager.m

//  BookManager

//

//  Created by MacBookPro on 2018. 7. 10..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//


#import "BookManager.h"

#import "Book.h"


@implementation BookManager


//초기화

- (id)init {

    self = [super init];

    if(self){

        bookList = [[NSMutableArray alloc]init];

    }

    return self;

}


//array에 addObject 매서드 써서 객체 삽입

-(void)addBook:(Book *)bookObject{

    [bookList addObject:bookObject];

}


//현재 존재하는 모든 책들 문자열로 리턴

-(NSString *)showAllBook{

    NSMutableString *strTemp = [[NSMutableString alloc]init];

    

    for (Book *bookTemp in bookList) {

        [strTemp appendString:@"\n"];

        [strTemp appendString:@"name : "];

        [strTemp appendString:bookTemp.name];

        [strTemp appendString:@"\n"];

        [strTemp appendString:@"genre : "];

        [strTemp appendString:bookTemp.genre];

        [strTemp appendString:@"\n"];

        [strTemp appendString:@"author : "];

        [strTemp appendString:bookTemp.author];

        [strTemp appendString:@"\n"];

        [strTemp appendString:@"============================="];

    }

    

    return strTemp;

}


//책 개수 리턴

-(NSUInteger)countBook{

    return [bookList count];

}


//이름값으로 책 찾기 메서드

-(NSString *)findBook:(NSString *)name{

    NSMutableString *strTemp = [[NSMutableString alloc]init];

    for(Book *bookTemp in bookList){

        if([bookTemp.name isEqualToString:name]){

            

            [strTemp appendString:@"name : "];

            [strTemp appendString:bookTemp.name];

            [strTemp appendString:@"\n"];

            

            [strTemp appendString:@"genre : "];

            [strTemp appendString:bookTemp.genre];

            [strTemp appendString:@"\n"];

            

            [strTemp appendString:@"author : "];

            [strTemp appendString:bookTemp.author];

            [strTemp appendString:@"\n"];

            [strTemp appendString:@"==================="];

            

            return strTemp;

        

        }

    }

    

    return nil;

}


//책 삭제

-(NSString *)removeBook:(NSString *)name{

    

    for(Book *bookTemp in bookList){

        if([bookTemp.name isEqualToString:name]){

            [bookList removeObject:bookTemp];

            return name;

        }

    }

    

    return nil;

}



@end


objectivec 특징


변수,메서드 선언부와 구현부 파일이 따로 나뉜다.

선언부 파일은 .h 

구현부 파일은 .m

실행부분은 main.m이다.

반드시 제일 끝부분에 ; 을 붙여주어야 한다. 이 부분이 swift와 다르다.


선언부에서 getter setter를 @property를 사용해서 대신할 수 있다.

구현부에서 @synthesize name, genre, author; 이런식으로 변수 명을 써주어야 한다.


메서드 종류


1.반환값이 없는 메서드 선언


-(void)메서드명 : (인자타입*)인자명

-(void)addBook: (Book *)bookObject;


2. 반환 값이 없는 메서드 구현


-(void)addBook:(Book *)bookObject{ 

[bookList addObject:bookObject]; //bookList 객체이 있는 addObject 메서드에 bookObject를 받아서 넣는다.

 }


3.반환 값이 있는 메서드 선언


//-(반환타입 *)메서드명: (인자타입 *)인자이름;

-(NSString *)findBook: (NSString *)name;



4.반환 값이 있는 메서드 구현

//이름값으로 책 찾기 메서드

-(NSString *)findBook:(NSString *)name{

    NSMutableString *strTemp = [[NSMutableString alloc]init];

    for(Book *bookTemp in bookList){

        if([bookTemp.name isEqualToString:name]){

            

            [strTemp appendString:@"name : "];

            [strTemp appendString:bookTemp.name];

            [strTemp appendString:@"\n"];

            

            [strTemp appendString:@"genre : "];

            [strTemp appendString:bookTemp.genre];

            [strTemp appendString:@"\n"];

            

            [strTemp appendString:@"author : "];

            [strTemp appendString:bookTemp.author];

            [strTemp appendString:@"\n"];

            [strTemp appendString:@"==================="];

            

            return strTemp;

        

        }

    }

    

    return nil;

}

'ios 뽀개기 > objective-c' 카테고리의 다른 글

objective c 의 모든것  (5) 2018.07.28
objective c alert 구현  (0) 2018.07.28
객체지향 예제  (0) 2018.07.10
array dictionary  (0) 2018.07.10
NSString 예제  (0) 2018.07.09
if문 for문 switch문  (0) 2018.07.09


array dictionary


//

//  main.m

//  NSArrayTest

//

//  Created by MacBookPro on 2018. 7. 10..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//


#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {

    @autoreleasepool {

       

        NSArray *frutie = [[NSArray alloc]initWithObjects:@"apple",@"banana", @"pineapple", @"lemon", nil];

        

        /* for 문 예제 1

        for (int i = 0; i< [frutie count]; i++){

            

            NSLog(@"frute : %@", [frutie objectAtIndex:i]);

        }

        */

        

        

        //for 문 예제2

        for (NSString *strTemp in frutie) {

            NSLog(@"과일1 : %@" , strTemp);

        }

        

        

        //가변 array

        //할당

        NSMutableArray *ffrute = [NSMutableArray arrayWithArray:frutie];

        

        [ffrute addObject:@"tomato"];

        

        [ffrute addObject:@"wotermelon"];

        

        [ffrute addObject:@"mango"];

        

        for (NSString *strTemp in ffrute){

            

            NSLog(@"과일2 : %@", strTemp);

            

        }

        

        

        //dictionary

         NSLog(@"--------------------------------------");

        

        NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"강영균", @"이름", @"30", @"나이", nil];

        NSLog(@"name : %@" , [dic objectForKey:@"이름"]);

        NSLog(@"age : %@" , [dic objectForKey:@"나이"]);

        

        

        //가변 dictionary

        NSMutableDictionary *mdic = [NSMutableDictionary dictionaryWithDictionary:dic];

        

        [mdic setObject:@"한국" forKey:@"사는곳"];

        [mdic setObject:@"까무잡잡" forKey:@"얼굴색"];

        

        

        NSLog(@"location : %@" , [mdic objectForKey:@"사는곳"]);

        NSLog(@"face color : %@" , [mdic objectForKey:@"얼굴색"]);

        

        

    }

    return 0;

}


'ios 뽀개기 > objective-c' 카테고리의 다른 글

objective c alert 구현  (0) 2018.07.28
객체지향 예제  (0) 2018.07.10
array dictionary  (0) 2018.07.10
NSString 예제  (0) 2018.07.09
if문 for문 switch문  (0) 2018.07.09
클래스 파일 나누기 - 선언 - 구현 - 할당  (0) 2018.07.09

NSString 예제

//

//  main.m

//  StringTest

//

//  Created by MacBookPro on 2018. 7. 9..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//


#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        

        //초기화

        //NSString *str = [[NSString alloc]initWithString:@"This is NSString"];

        

        //간소하게

        NSString *str = @"This is NSString";

        NSLog(@"str : %@",str);

        

        //immutable class - 변경 불가

        

        NSString *result;

        

        result = [str substringFromIndex:6]; //6번째 문자열 이후의 문자열 출력 NSString

        result = [str substringToIndex:3]; // 앞에서 3번째 문자열 까지 출력 Thi

        

        result = [[str substringToIndex:11]substringFromIndex:8];   // NSS

        result = [[str substringFromIndex:8] substringToIndex:3];   // NSS

        

        result = [[str substringWithRange:NSMakeRange(8, 3)] lowercaseString];  //nss

        

        NSLog(@"result : %@", result);

        

        //mutable - 변경가능

        NSMutableString *mstr = [NSMutableString stringWithFormat: str];

        [mstr appendString: @" and NSMutableString"];

        [mstr insertString:@"Mutable " atIndex:8];

        NSLog(@"mstr : %@", mstr); //his is Mutable NSString and NSMutableString


        

    }

    return 0;

}

'ios 뽀개기 > objective-c' 카테고리의 다른 글

객체지향 예제  (0) 2018.07.10
array dictionary  (0) 2018.07.10
NSString 예제  (0) 2018.07.09
if문 for문 switch문  (0) 2018.07.09
클래스 파일 나누기 - 선언 - 구현 - 할당  (0) 2018.07.09
property 옵션을 이용한 getter setter  (0) 2018.07.09

if문 for문 switch문


main.m


//

//  main.m

//  FirstObjectiveC

//

//  Created by MacBookPro on 2018. 7. 9..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//


#import <Foundation/Foundation.h>

//구현부 상속해줘야함

#import "Vehicle.h"


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //4. Vehicle 객체 생성

        Vehicle *hello = [Vehicle new]; //create instance object

        

        //5. 값 할당 및 출력

        //도트로 값 할당 가능

        //hello.wheels = 4;

        //hello.seats = 2;

        //동시에 값 할당하기

        [hello setWheels:4 Seats:2];

        

        //[hello drawCircleXYR:1 :2 :3];

        

        //getter 호출

        //NSLog(@"wheels : %i, seats : %i", [hello getWheels], [hello seats]);

        

        //if문

        if(hello.wheels == 3){

            NSLog(@"wheels : 3");

        }else{

            NSLog(@"no");

        }

        

        //switch 문

        switch (hello.seats) {

            case 4:

                NSLog(@"wheels : 4");

                break;

            case 2:

                NSLog(@"seats : 2");

                break;

            default:

                NSLog(@"no");

                break;

        }

        

        

        for(int i = 0; i<hello.wheels; i++){

            NSLog(@"wheels : %i", i);

        }

        

        int i = 0;

        while (i < hello.seats) {

            NSLog(@"seats : %i", i);

            i++;

        }

        

        

    }

    return 0;

}

'ios 뽀개기 > objective-c' 카테고리의 다른 글

array dictionary  (0) 2018.07.10
NSString 예제  (0) 2018.07.09
if문 for문 switch문  (0) 2018.07.09
클래스 파일 나누기 - 선언 - 구현 - 할당  (0) 2018.07.09
property 옵션을 이용한 getter setter  (0) 2018.07.09
ObjectiveC seeter getter  (0) 2018.07.09

클래스 파일 나누기 - 선언 - 구현 - 할당


선언부 Vehicle.h

//

//  Vehicle.h

//  FirstObjectiveC

//

//  Created by MacBookPro on 2018. 7. 9..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//

//  선언부

#import <Foundation/Foundation.h>


    //객체 설정

    @interface Vehicle : NSObject{

        //1.member variable -  맴버 변수 선언

    }


    //2.member method - 맴버 메서드 선언

    //getter setter 대신에 property 작성

    @property (getter=getWheels, setter=wheels:)int wheels;

    @property int seats;




    //인자 값이 두개인 메서드 선언

    -(void)setWheels:(int)w Seats: (int)s;


    //-(void)drawCircleXYR: (int)x :(int)y :(int)r;



@end


구현부 Vehicle.m


//

//  Vehicle.m

//  FirstObjectiveC

//

//  Created by MacBookPro on 2018. 7. 9..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//   구현부


#import "Vehicle.h"


//3.Vehicle 객체 상속해서 메서드 구현

@implementation Vehicle

@synthesize wheels;

@synthesize seats;



-(void)print{

    NSLog(@"wheels : %i, seats : %i" , wheels, seats);

}



//구현

-(void)setWheels:(int)w Seats:(int)s{

    wheels = w;

    seats = s;

}


@end




main.m


//

//  main.m

//  FirstObjectiveC

//

//  Created by MacBookPro on 2018. 7. 9..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//


#import <Foundation/Foundation.h>

//구현부 상속해줘야함

#import "Vehicle.h"


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //4. Vehicle 객체 생성

        Vehicle *hello = [Vehicle new]; //create instance object

        

        //5. 값 할당 및 출력

        //도트로 값 할당 가능

        //hello.wheels = 4;

        //hello.seats = 2;

        //동시에 값 할당하기

        [hello setWheels:4 Seats:2];

        

        //[hello drawCircleXYR:1 :2 :3];

        

        //getter 호출

        NSLog(@"wheels : %i, seats : %i", [hello getWheels], [hello seats]);

        

        

    }

    return 0;


}



'ios 뽀개기 > objective-c' 카테고리의 다른 글

NSString 예제  (0) 2018.07.09
if문 for문 switch문  (0) 2018.07.09
클래스 파일 나누기 - 선언 - 구현 - 할당  (0) 2018.07.09
property 옵션을 이용한 getter setter  (0) 2018.07.09
ObjectiveC seeter getter  (0) 2018.07.09
objective-c 객체 사용법  (0) 2018.07.09



//

//  main.m

//  FirstObjectiveC

//

//  Created by MacBookPro on 2018. 7. 9..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//


#import <Foundation/Foundation.h>

// - 인스턴스 메서드,  + 클래스 메서드 (동적 할당 x)


//객체 설정

@interface Vehicle : NSObject{

        //1.member variable -  맴버 변수 선언

//        int wheels;

//        int seats;

}


//2.member method - 맴버 메서드 선언


//getter setter 대신에 property 작성

@property (getter=getWheels, setter=wheels:)int wheels;

@property int seats;


//-(void)setWheels:(int)w;

//-(void)setSeats:(int)s;

////getter

//-(int)wheels;

//-(int)seats;

//-(void)print;

@end



//3.Vehicle 객체 상속해서 메서드 구현

@implementation Vehicle

@synthesize wheels;

@synthesize seats;


//-(void)setWheels:(int)w{

//    wheels = w;

//}

//

//-(void)setSeats:(int)s{

//    seats = s;

//}

//

////getter 메서드 구현

//-(int)wheels{

//    return wheels;

//}

//

//-(int)seats{

//    return seats;

//}


-(void)print{

    NSLog(@"wheels : %i, seats : %i" , wheels, seats);

}

@end


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //4. Vehicle 객체 생성

        Vehicle *hello = [Vehicle new]; //create instance object

        

        //5. 값 할당 및 출력

        [hello wheels: 4];

        [hello setSeats: 2];

        

        //삭제하고

        //[hello print];

        //getter 호출

        NSLog(@"wheels : %i, seats : %i", [hello getWheels], [hello seats]);

    }

    return 0;

}


'ios 뽀개기 > objective-c' 카테고리의 다른 글

NSString 예제  (0) 2018.07.09
if문 for문 switch문  (0) 2018.07.09
클래스 파일 나누기 - 선언 - 구현 - 할당  (0) 2018.07.09
property 옵션을 이용한 getter setter  (0) 2018.07.09
ObjectiveC seeter getter  (0) 2018.07.09
objective-c 객체 사용법  (0) 2018.07.09

//

//  main.m

//  FirstObjectiveC

//

//  Created by MacBookPro on 2018. 7. 9..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//


#import <Foundation/Foundation.h>

// - 인스턴스 메서드,  + 클래스 메서드 (동적 할당 x)


//객체 설정

@interface Vehicle : NSObject{

        //1.member variable -  맴버 변수 선언

        int wheels;

        int seats;

}


//2.member method - 맴버 메서드 선언

-(void)setWheels:(int)w;

-(void)setSeats:(int)s;

//getter

-(int)wheels;

-(int)seats;

-(void)print;


@end



//3.Vehicle 객체 상속해서 메서드 구현

@implementation Vehicle

-(void)setWheels:(int)w{

    wheels = w;

}


-(void)setSeats:(int)s{

    seats = s;

}


//getter 메서드 구현

-(int)wheels{

    return wheels;

}


-(int)seats{

    return seats;

}


-(void)print{

    NSLog(@"wheels : %i, seats : %i" , wheels, seats);

}


@end


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //4. Vehicle 객체 생성

        Vehicle *hello = [Vehicle new]; //create instance object

        

        //5. 값 할당 및 출력

        [hello setWheels: 4];

        [hello setSeats: 2];

        

        //삭제하고

        //[hello print];

        //getter 호출

        NSLog(@"wheels : %i, seats : %i", [hello wheels], [hello seats]);

    }

    return 0;

}


'ios 뽀개기 > objective-c' 카테고리의 다른 글

NSString 예제  (0) 2018.07.09
if문 for문 switch문  (0) 2018.07.09
클래스 파일 나누기 - 선언 - 구현 - 할당  (0) 2018.07.09
property 옵션을 이용한 getter setter  (0) 2018.07.09
ObjectiveC seeter getter  (0) 2018.07.09
objective-c 객체 사용법  (0) 2018.07.09

objective-c 객체 사용법


//

//  main.m

//  FirstObjectiveC

//

//  Created by MacBookPro on 2018. 7. 9..

//  Copyright © 2018년 MacBookPro. All rights reserved.

//


#import <Foundation/Foundation.h>

// - 인스턴스 메서드,  + 클래스 메서드 (동적 할당 x)


//객체 설정

@interface Vehicle : NSObject{

        //1.member variable -  맴버 변수 선언

        int wheels;

        int seats;

}


//2.member method - 맴버 메서드 선언

-(void)setWheels:(int)w;

-(void)setSeats:(int)s;

-(void)print;

@end



//3.Vehicle 객체 상속해서 메서드 구현

@implementation Vehicle

-(void)setWheels:(int)w{

    wheels = w;

    

}


-(void)setSeats:(int)s{

    seats = s;

}


-(void)print{

    NSLog(@"wheels : %i, seats : %i" , wheels, seats);

}


@end


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //4. Vehicle 객체 생성

        Vehicle *hello = [Vehicle new]; //create instance object

        

        //5. 값 할당 및 출력

        [hello setWheels: 4];

        [hello setSeats: 2];

        [hello print];

    }

    return 0;

}

'ios 뽀개기 > objective-c' 카테고리의 다른 글

NSString 예제  (0) 2018.07.09
if문 for문 switch문  (0) 2018.07.09
클래스 파일 나누기 - 선언 - 구현 - 할당  (0) 2018.07.09
property 옵션을 이용한 getter setter  (0) 2018.07.09
ObjectiveC seeter getter  (0) 2018.07.09
objective-c 객체 사용법  (0) 2018.07.09

+ Recent posts

티스토리 툴바