Objective-C単語

オブジェクティブシー

Objective-Cとは、C言語ベースSmalltalk言オブジェクト指向を取り入れた言である。

概要

開発者はBrad CoxとTom LoveC言語の上にSmalltalkインタプリタを乗っけただけという、非常に直球な設計をしている。C同様気をつけないと危ない言なのだが、変に煩雑な安全装置を付けるよりは、これぐらい割りきった作りの方がいいのかもしれない。分かって使う分にはとても便利なので、ハック魂のある人には割と好かれている。

二人はこれで言ベンチャーを立ち上げるも、大ヒットしたという話は特にないよう。そのまま行けば埋もれた言で終ったのだろうが、新企業NeXTライセンスを取った事で、潜在の高さだけは世に普く知られるようになった。

NeXTAppleに買収された後は、Carbonに代わってMacintoshMac OS X)のCocoaiPhone OS(現:iOS)のCocoa Touchフレームワークとして使われている。なんというか、20年遅れてが来た感じである。

C言語上位互換なのでC言語的な記述も許されている。オブジェクトシステムが動的であることが特徴。「Objective」な部分は向き不向きがかなりハッキリしており、大まかな内容をざっくり書くには非常に便利な反面、細かいチューニングを行うにはパフォーマンス的にも記法的にも全く向かない。そういう部分はCかC++で書いて「Objectiveなグルー」を書くのがスタイルである。ヘンテコな最適化技法も多く、ハマると結構が深かったりする。プログラマに出来ることは制限しない!

最近Objective-C2.0として近代化し、ガベージコレクションが付いたりC#プロパティが付いたりした。
でもiPhone OSではリソース制限が厳しいのでAutoreleaseで解放をする。

最新版ではAutomatic Reference Countingという怪しさ満点の拡が施され、参照カウントなんだけどGCチック(でも命名規約は守ってね!)な変態に。それどころか10.8でガベージコレクション止されるという斜め上の展開である(そんな言Objective-Cだけだろう)。Appleコンパイラに投資した結果がこれだよ

CocoaとInterface Builderを使ったHello world

AppController.h

#import <Cocoa/Cocoa.h>

@interface AppController : NSObject
{
IBOutlet id textField;
}
- (IBAction)setHello:(id)sender;
@end

AppController.m

#import "AppController.h"

@implementation AppController

- (IBAction)setHello:(id)sender
{
[textField setStringValue:@"Hello, world!"];
}
@end

Interface BuilderではNSButtonをAppControllerアクションに接続、NSTextFieldAppControllertextFieldアウトレットに接続

関連項目

【スポンサーリンク】

スマホ版URL:
https://dic.nicovideo.jp/t/a/objective-c

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

Objective-C

4 ななしのよっしん
2010/11/06(土) 11:31:07 ID: n5Ziv4asFY
フレームワークNeXT STEP用に作られたってことの誤解じゃないかなぁ。
事実Cocoa/Cocoa Touchフレームワーク専用みたいになってるし。
5 ななしのよっしん
2013/01/15(火) 17:50:05 ID: BN0c92nd9y
GBは重くなるし、速度が欲しい時には用なんだよ
つかガベージコレクトごときでこんな恨み言な記事書いてる時点で・・・
JAVAC#で慣らされちゃうとこうなるのかなあ
6 ななしのよっしん
2013/01/15(火) 21:21:55 ID: ksaedm+Ne5
>>5
別に恨み言ではくね?むしろ「さすがApple」って褒めてるじゃん。
現役の言からガベコレ外すのなんて今時Appleくらいだろ。良くも悪くも。
むしろ何でそんなに突っ掛かるん?アセンブリ言語とかC++至上義のおっさんなの?
7 ななしのよっしん
2013/02/06(水) 22:52:43 ID: Fort3hTzf6
よくInterpreterとかいう表現があるけど弊があるよな。
静的付言じゃなく動的付言なだけ。
Interpreterじゃないと出来ないようなevalとか出来ない。
MessageMethodの整合性確認を実行時にやってるように見えるが、
実際は、ObjectがObjectに送られたMessageを判断し例外を発生させているだけ。機構上C++JavaみたいにObjectのMember関数を呼び出してる訳じゃなく、
なOOの概念に従ってMessageをObjectに送るって単純な構造になってるからああなってるだけ。1つだけMethodを登録してObjectに送られるMessageを全て処理するなんて事も出来る。
Interpreter的というより、OOPとして純というべきだろ。
8 ななしのよっしん
2013/03/02(土) 15:47:03 ID: AIRac1EM7G
>>7
クラスの実行時定義だのmethod implementationの入替えだのなものがあるから準eval的といってもよくない?
9 ななしのよっしん
2014/06/22(日) 08:41:17 ID: u9cwxz1fDF
AppleObjective-CからCを抜いて新言swiftを作った。
10 ななしのよっしん
2014/06/22(日) 09:51:03 ID: 0JgcOuD6pZ
swiftが登場したけど、知識がないから記事に書けない
だれか記載願う
11 ななしのよっしん
2015/12/23(水) 13:07:10 ID: JmXmy2oVe0
ユーザーには寄り添ってもプログラマには寄り添わなかったため、DirectXVisualC++の攻勢の前にゴミ箱と化した往年のMac
今のMacOSがそれの反点を踏まえているかは人によって意見の分かれるところだろう
12 ななしのよっしん
2016/08/18(木) 05:24:18 ID: 1t3K6+DzXK
ARMUnicodeLLVMClangOpenCLObjective-Cmp4Webkitタイプするのも疲れる…
プログラマに寄り添った結果、アップルオープンソース界を中心にマイクロソフトGoogleけらに見えるほどの貢献を果たしているんだよなあ
Appleがいなかったら、MSのグラ分野は5年遅れていたし(QuickTime裁判と資援助のバーターの件)
ソフトバンクに買収されたARM社やGoogleAndroidに至っては、存在すらしないんやでえ情弱
13 ななしのよっしん
2016/08/18(木) 05:33:05 ID: 1t3K6+DzXK
ああHTML5もか…

急上昇ワード

2019/10/17(木)09時更新