Objective-C言語のメモ書き(3)

2010. 03. 13
引き続き『iPhone SDKプログラミング大全』を読み進めます。

第2章は『Objective-C基礎講座』となってますので、改めて復習したいと思います。
(『Objective-C言語のメモ書き(1)』と大部分の内容が重複しています)

本書ではC言語やオブジェクト指向の説明はありません。

既にC++やJavaなど、他のオブジェクト指向言語に触れている人向けに、Objective-C言語の端的な特徴を説明しています。

●メソッド

・引数無しのメソッドの呼び出し

[オブジェクト メソッド]

角カッコ([])内がObjective-C言語、外がC言語となります。

・引数が1つのメソッドの呼び出し

[オブジェクト メソッド:引数]

引数はコロン(:)の直後に書かれます。

・引数が2つのメソッドの呼び出し

[オブジェクト メソッド:引数1 ラベル:引数2]

Objective-C言語のメモ書き(1)では『キーワード』と書きましたが、Objective-C 2.0プログラミングガイドでは『ラベル』と書かれていましたのでそれに従います。

クラスリファレンスでも、2つの引数を持つメソッドは『メソッド:ラベル:』と記載しています。

・メソッドの宣言(インスタンスメソッドの戻り値有り、引数2つの場合)

- (戻り値の型)メソッド:(引数1型) 引数 ラベル:(引数2型) 引数2;

クラスメソッドの場合、行頭の『-』が『+』になります。

●クラスの宣言と実装

・クラスの宣言

#import <ヘッダファイル名>
@interface クラス名:スーパークラス名
{
    インスタンス変数の宣言;
}
+ クラスメソッドの宣言;
- インスタンスメソッドの宣言;
@end 

C言語では『#include』でヘッダファイルを読み込みますが、『#include』が同一ファイルが多重呼び出し可能であるのに対し、『#import』は一度しか同一ファイルを読み込ません。
クラスの宣言は『@interface』で始まり『@end』で終わります。
クラス名は慣例で大文字で始まります。
元になるスーパークラスは必須で、該当するクラスが無ければNSObjectとします。

・クラスの実装

#import "ヘッダファイル名"
@implementation クラス名
- (戻り値の型)インスタンスメソッド名
{
    メソッドの実装;
}
@end 

クラスの実装は『@implementation』で始まり『@end』で終わります。

・クラスを型指定した変数の宣言(静的な型付け)

クラス名 *変数名; 

木下さんは『クラス名* インスタンス変数名;』と、クラス名側にアスタリスク(*)を付けていますが、Objective-C 2.0プログラミングガイドやApple公式サンプルコードでは変数名側にアスタリスクを付けているので、当サイトでは変数名側に統一します。

・汎用クラス型の変数の宣言(動的な型付け)

id 変数名; 

全てのクラス型に対応したid型の場合はアスタリスクは不要です。

・オブジェクトを無効にする値

クラス名 *変数名;
変数名 = nil; 

変数にnilを代入すると、そのオブジェクトは無効(値としては0)になります。

これを利用して、オブジェクトが有効か無効かを判別できます。

if (変数名){
    オブジェクトが有効の場合;
}
else{
    オブジェクトが無効の場合;
}

また、nilを代入した無効なオブジェクトを呼び出してもエラーにならず、戻り値が無い場合は無視され、戻り値が有る場合は0を返します。



参考文献

iPhone SDK 3 プログラミング大全 実践プログラミング (MacPeople Books)iPhone SDK 3 プログラミング大全 実践プログラミング (MacPeople Books)
(2009/09/08)
木下 誠

商品詳細を見る






QuietControl 30 wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
04 | 2017/05 | 06
Sun Mon Tue Wed Thu Fri Sat
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

QuietControl 30 wireless headphones
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR