7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Objective-Cの基本文法まとめ

Last updated at Posted at 2016-05-21

概要

Objective-Cの基本文法をまとめていく。

環境

OSX El Capitan 10.11.4
Xcode 7.3

クラスの基本

MyClass.h

# import <Foundation/Foundation.h>

@interface MyClass : NSObject {
    NSString* message; //メッセージを保管するプロパティ
}

-(void)setMessage:(NSString*)str; //メッセージをセットする
-(NSString*)message; //メッセージを取り出す
-(void)printMessage; //メッセージを出力する

@end

MyClass.m

# import "MyClass.h"

@implementation MyClass

-(void)setMessage:(NSString*)str{
    message = str; //strで受け取った値をセットする
}

-(NSString*)message {
    return message; //インスタンス変数を返す
}

-(void)printMessage {
    NSLog(@"%@",message); //messageはインスタンス変数なので%@で出力する

}

@end

main.m

# import <Foundation/Foundation.h>
# import "MyClass.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        MyClass* obj = [[MyClass alloc] init]; //インスタンスを作る
        [obj setMessage:@"Hello world"]; //メッセージをセットする
        [obj printMessage]; //メッセージを出力する
    }
    return 0;
}

継承

MyClass.h

# import <Foundation/Foundation.h>

@interface MyClass : NSObject {

@protected
    NSString* message;

}

+(MyClass*)MyClassWithMessge:(NSString*)str;
-(void)setMessage:(NSString*)str;
-(NSString*)message;
-(void)printMessage;

@end

//継承関係はヘッダーファイルを見る必要がある
@interface PowerMyClass : MyClass {
    
@protected
    NSString* message2;

}

+(PowerMyClass*)PowerMyClassWithMessge:(NSString*)str andMessage2:(NSString*)str2;
-(void)setMessage2:(NSString*)str;
-(NSString*)message2;

@end

MyClass.m

# import "MyClass.h"

@implementation MyClass

+(MyClass*)MyClassWithMessge:(NSString*)str{
    MyClass* obj = [[self alloc] init];
    [obj setMessage:str];
    return obj;
}

-(void)setMessage:(NSString*)str{
    message = str;
}

-(NSString*)message {
    return message;
}

-(void)printMessage {
    NSLog(@"%@",message);

}

@end

@implementation PowerMyClass

+(PowerMyClass*)PowerMyClassWithMessge:(NSString*)str andMessage2:(NSString*)str2 {
    id obj = [super MyClassWithMessge:str];
    [obj setMessage2:str2];
    return obj;
}

-(void)setMessage2:(NSString*)str {
    message2 = str;
}
-(NSString*)message2 {
    return message2;
}


-(void)printMessage {
    NSLog(@"%@ %@",message, message2);
}

@end

main.m

# import <Foundation/Foundation.h>
# import "MyClass.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
    /*
        MyClass* obj = [[MyClass alloc] init];
        [obj setMessage:@"Hello world"];
        [obj printMessage];
    */
        
        //MyClass* myClass = [MyClass MyClassWithMessge:@"hello world"];
        id myClass = [MyClass MyClassWithMessge:@"first"];
       [myClass printMessage];
        
        id myClass2 = [PowerMyClass
                       PowerMyClassWithMessge:@"second" andMessage2:@"test"];
        
        [myClass2 printMessage];
    }
    return 0;
}
7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?