2003 Apple Computer, Inc. (Last Updated May 7, 2003)



Similar documents

プレポスト【問題】

GEC-Java

スケジューリングおよび通知フォーム のカスタマイズ

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Microsoft PowerPoint ppt

PowerPoint プレゼンテーション

Oracleセキュア・エンタープライズ・サーチ

Microsoft PowerPoint - ruby_instruction.ppt

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

PowerPoint プレゼンテーション

情報システム設計論II ユーザインタフェース(1)

プログラミング入門1

PowerPoint プレゼンテーション

プログラミング基礎I(再)

レコードとオブジェクト

アプリケーション インスペクションの特別なアクション(インスペクション ポリシー マップ)

Microsoft PowerPoint - 04_01_text_UML_03-Sequence-Com.ppt

intra-mart Accel Platform

JavaプログラミングⅠ

基本情報STEP UP演習Java対策

Oracle ADF 11g入門

Groups for Business とは Google グループを使用すると 組織の内外のユーザーと 効率的なコミュニケーションを図ることができます グループ の作成と管理をチームに任せることができ コラボレーショ ンが容易に実現します Groups for Business を使用すると もっ

ファイナライザを理解する ~ ファイナライザに起因するトラブルを避けるために ~ 2013 年 11 月 25 日 橋口雅史 Java アプリケーションでファイナライザ (finalize() メソッド ) を使用したことがあるプログラマーは多いと思います しかし ファイナライザの仕組みや注意点につ

<4D F736F F D20B6BCB5D7B2CCDED7D8CFC6ADB1D9315F43532E444F43>

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma


intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

PowerPoint Presentation

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

Prog2_12th

カメラ操作のプログラミング(iOS用)について (TP )

レコード class Point attr_accessor("x", "y") インスタンス変数の宣言 point.rb

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

AquesTalk Mac マニュアル

更新履歴 No 更新箇所版数日付 1 第一版作成 /12/28 2 一部画像差し替え 誤字修正 /02/09 2

MIB サポートの設定

Web GIS Template Uploader 利用ガイド

9 WEB監視

PowerPoint プレゼンテーション

デザインパターン第一章「生成《

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

intra-mart Accel Platform

Micro Focus Enterprise Developer チュートリアル メインフレーム COBOL 開発 : MQ メッセージ連携 1. 目的 本チュートリアルでは CICS から入力したメッセージを MQ へ連携する方法の習得を目的としています 2. 前提 使用した OS : Red H

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

VLAN の設定

Microsoft Word - ShareFastClientManual_JP_R1-1-0.doc

メソッドのまとめ

VB.NET解説

指定立替納付を使った場合の 国内提出書類の提出方法 1 出願書類や 納付書などを 指定立替納付で支払う場合の手順をご案内します ここでは ひな型を Word で編集する場合の手順を案内します 他を利用する場合は ユーザガイドをご覧ください (1) 指定立替納付を使うための事前準備 a. クレジットカ

Javaの作成の前に

コンテンツセントリックネットワーク技術を用いた ストリームデータ配信システムの設計と実装

2

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

サイボウズ Office 8 リンク集マニュアル

キャビネットの確認 キャビネットの確認 登録権または参照権があるキャビネットでは キャビネットの登録データを確認できます 各利用者の権限は 管理者によって設定されます キャビネットとファイル送受信の違い それぞれの特徴を確認し お客様のニーズに合わせて利用してください ファイル送受信の操作方法 ファ

XNA Framework

掲示板の閲覧 掲示板の閲覧 登録権または参照権のある掲示板グループの掲示版を閲覧することができます 各利用者の権限は 管理者によって設定されます 掲示板を閲覧する 1 掲示板画面を表示し 閲覧する掲示が含まれている掲示板グループ 掲示板の順にクリックします 掲示板画面の表示方法 ポータル画面の画面説

POSIXスレッド

Microsoft PowerPoint - 簡易マニュアル-3次-1-一般 見波2_4.ppt

TextSystemOverview

目次 1. ログイン P2 2. 送受信管理 P メールの新規送信 P 未送信 ( 保存 ) メールの編集 削除 P 送信済みメールの状況確認 P6 3. メンバー ( 送信先 ) 管理 P メンバーの新規登録 編集 P メンバーの削除 P

KTest

レビュー作業 共有レビュー 機能を使用するには Acrobat 8 Professional または Acrobat 8 Standard が必要です Acrobat 8 Professional を使って Adobe PDF に Adobe Reader のユーザにもレビュー担当者として参加を許可

インストーラー 管理番号 内容 対象バージョン 230 HULFT がすでにインストールされているパスに対してサイレントインストールを実行すると インストールされていた HULFT の動作環境が不正な状態になる 7.3.0~7.3.1 ユーティリティ 管理番号 内容 対象バージョン 231 管理情報

プログラミング入門1

Microsoft PowerPoint - UML1_2009.ppt

Delphi Generics.Collections

ゲートウェイのファイル形式

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀

マルチ VRFCE PE-CE リンクのプロビジョ ニング

FTPサーバーへのアクセス権限設定

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

メディプロ1 Javaプログラミング補足資料.ppt

Microsoft Word - C言語研修 C++編 3.doc

Java言語 第1回

HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなど

WebReportCafe

Cisco Jabber for Windows のカスタマイズ

home-unit2_quickguide_ras_v1.1

アクティビティ図・シーケンス図からのコード生成 機能ガイド

Slide 1

Microsoft PowerPoint - lec10.ppt

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

PowerPoint プレゼンテーション

Oracle DatabaseとIPv6 Statement of Direction

TimeCardView と Cisco Unified Communications Express Historical Reporting Client

AquesTalk2 Mac マニュアル

Microsoft Word - no06.doc

HP Primeバーチャル電卓

A. InstallScript プロジェクト InstallScript インストールは InstallScript エンジンによって制御され 決められた順序で一連のイベントが生成されます これらのイベントは インストールを実行するソフトウェアハンドラーをトリガーします たとえば インストールがロ

PowerPoint プレゼンテーション

レコードとオブジェクト

連絡先

FormPat 環境設定ガイド

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

データアダプタ概要

IBM Proventia Management/ISS SiteProtector 2.0

Microsoft Word - Writing Windows Installer's DLL.doc

Chart3D for WPF/Silverlight

Transcription:

2003 Apple Computer, Inc. (Last Updated May 7, 2003)

@interface AppController : NSObject { IBOutlet NSArray *keywords; }

図 4-1 Interface Builder におけるアウトレットの接続 アプリケーションは 一般に そのカスタムコントローラオブジェクトとユーザインタフェー ス上のオブジェクトの間のアウトレット接続を設定しますが これらの接続は Interface Builder でインスタンスとして表現できる任意のオブジェクトの間で たとえ 2 つのカスタム オブジェクトの間でも作成できます インスタンス変数と同様に それをクラスに含めること が正しいという根拠が必要になります オブジェクトのインスタンス変数が多いほど より多 くのメモリを占有することになるためです オブジェクトを参照する別の方法がある場合 た とえば 行列のインデックス位置を通じての検索 関数パラメータとして含めることによる検 索 タグの使用による検索などができる場合は その方法を採用してください 2003 Apple Computer, Inc. (Last Updated May 7, 2003)

委任の仕組み 委任メカニズムの設計は単純です 図 1-1 委任する側のクラスには アウトレット 通常 は delegate という名前が付けられている があり このアウトレットを設定してアクセスす るメソッドも含まれています さらにそのメソッドのいくつかを宣言し 実装はしない そ れらが 簡易プロトコル を構成します 簡易プロトコルは一般に 委任する側のクラスのカ テゴリとして生じますが 委任ですべてのメソッドをプロトコルに実装する必要がないという 点で正式なプロトコルと異なります 委任は それ自身が委任する側のオブジェクトと連携し たり オブジェクトのデフォルトの動作に作用することに関心がある場合は 簡易プロトコル からなるメソッドだけを実装します 重要 委任を使っている Cocoa クラスを継承する場合 その委任をサブクラスに明示的には保持し ないでください 委任する側のオブジェクトは その委任を 所有 していると見なされてい るわけではないので それらを保持すべきではありません 慣例により Cocoa オブジェクト はそれらの委任を保持しません 図 1-1 委任のメカニズム 簡易プロトコルのメソッドは 委任する側のオブジェクトによって処理または予想された重要 なイベントに注目します このオブジェクトは これらのイベントを委任に伝達するか 進行 中のイベントの場合は委任からの入力や承認を要求することを望んでいます たとえば ユー ザがウインドウのクローズボタンをクリックすると ウインドウオブジェクトは windowshouldclose: メッセージをその委任に送信します これにより たとえばウインド ウが保存する必要のあるデータと関連している場合は 委任にウインドウのクローズを拒否ま たは延期する機会が与えられます 図 1-2 を参照 ウインドウが閉じられると ウインドウ オブジェクトはwindowWillClose: メッセージを委任に送信し ウインドウ専用のリソースを 解放するなど その時点で適切なことを実行する機会を委任に与えます

図 1-2 委任に関する現実的なシーケンス 委任する側のオブジェクトがメッセージを送信するのは 委任がそのメソッドを実装している 場合に限られるということを強調しておかなければなりません これを調べるには 最初に 委任で NSObject メソッドの respondstoselector: を呼び出します この事前のチェック が 簡易プロトコルの設計の鍵となります 委任メッセージの形式 委任メソッドの形式はあらかじめ決められています 委任メソッドは 委任を実行する Application Kit オブジェクト アプリケーション ウインドウ コントロールなど の名前 で始まります この名前は小文字で NS プレフィックスは付いていません 通常 常にで はない このオブジェクト名の次に 報告されたイベントの時間軸上での状態を示す助動詞 が続きます すなわち この助動詞は イベントが発生しそうなのか Should または Will それともすでに発生したのか Did または Has を示します この時間 軸上での区別は 戻り値を期待しているメッセージと期待していないメッセージを分類するの に役立ちます リスト 1-1 には 戻り値を期待している Application Kit の委任メソッドをい くつか示します リスト 1-1 戻り値のある委任メソッドのサンプル - (BOOL)application:(NSApplication *)sender openfile:(nsstring *)filename; - (BOOL)textShouldBeginEditing:(NSText *)textobject; - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender; - (NSRect)windowWillUseStandardFrame:(NSWindow *)window defaultframe:(nsrect)newframe;

1-2 void - (void) tableview:(nstableview*)tableview mousedowninheaderoftablecolumn:(nstablecolumn *)tablecolumn; - (void)applicationdidunhide:(nsnotification *)notification; - (void)applicationwillbecomeactive:(nsnotification *)notification; - (void)windowdidmove:(nsnotification *)notification; NSWindowDidMoveNotification delegate Application Kit

id wincontroller = [[NSApp keywindow] delegate]; id appcontroller = [NSApp delegate];

2003 Apple Computer, Inc. (Last Updated May 7, 2003)

通知メカニズムの仕組みは 概念的には単純です プロセスには通知センターというオブジェ クトがあり 通知のためのクリアリングハウスであり放送局の役割を果たします アプリケー ションのどこかほかの場所で発生するイベントについて知る必要のあるオブジェクトは イベ ントが発生したときに通知してくれるよう通知センターに登録します たとえば コントロー ラオブジェクトは ポップアップが選択されたときに その変化を認識してユーザインタ フェースに反映できなければなりません イベントが発生すると そのイベントを処理するオ ブジェクトが通知センターに通知を送り センターがそのオブザーバすべてに通知を配信しま す 図 3-1 にこのメカニズムを示します 注意 通知センターは そのオブザーバに同時に通知を配信します すべての通知が送信され るまで 送信側のオブジェクトには制御は戻りません 通知を非同期にブロードキャストする には 通知キューを使用する必要があります 通知キュー を参照 通知キューは 指定 された通知を遅らせ 指定された何らかの基準に従って類似した通知を結合させてから 通知 センターに通知を送信します 図 3-1 通知の送信とブロードキャスト 任意のオブジェクトが通知を送信でき 自身を通知のオブザーバとして通知センターに登録す ることができます 通知を送信するオブジェクト 通知に含まれるオブジェクト および通知 のオブザーバはすべて別々のオブジェクトでも 同じオブジェクトでも構いません 送信側 のオブジェクトと監視するオブジェクトを同じにすると アイドル時間の処理などに役に立ち ます 通知を送信するオブジェクトは オブザーバについて知る必要はありません これに 対して オブザーバは少なくとも通知名と 通知オブジェクトによってカプセル化されたディ クショナリのキーを知る必要があります 通知オブジェクトの構成については 通知オブ

- (void)notificationhandlername:(nsnotification *);

NSNotificationCenter

NSDistributedNotificationCenter NSDefaultRunLoopMode

どのスレッドにも タスクのデフォルト通知センターと結び付いているデフォルトの通知 キューがあります 独自の通知キューを作成し センターやスレッドごとに複数のキューを保 持することができます 図 3-2 通知キューと通知センター 通知の結合 NSNotificationQueue クラスは Foundation Kit の通知メカニズムに 2 つの重要な機能を提 供します すなわち 通知の結合と非同期の送信です 結合は キューに入ったばかりの通知 に類似した通知を キューから削除する処理です 新しい項目が すでにキューに入っている 通知に類似している場合 新しいものはキューには入れられず 類似した通知がすべて キューの先頭にあるものは除いて 削除されます ただし このように特殊な結合の動作に は依存しないでください 類似性の基準を指定するには enqueuenotification:postingstyle:coalescemask:formodes: メソッドの第 3 引数に以下 の定数を指定します 複数も可 NSNotificationNoCoalescing NSNotificationCoalescingOnName NSNotificationCoalescingOnSender NSNotificationCoalescingOnName と NSNotificationCoalescingOnSender 定数を

NSModalPanelRunLoopMode NSPostASAP NSPostWhenIdleNSPostNow NSPostASAP NSPostASAP draw...

NSPostASAP NSPostNow NSPostNow 2003 Apple Computer, Inc. (Last Updated May 7, 2003)

5-1 nil

nil NSApp id sender - (void)capitalizeword:(id)sender; - (IBAction) deleterecord:(id)sender; IBAction

IBAction sender nameentered: - (void)nameentered:(id) sender { NSString *name = [sender stringvalue]; if (![name isequaltostring:@""]) { NSMutableArray *names = [self namelist]; [names addobject:name]; [sender setstringvalue:@""]; } } [sender selectedrow] [sender state] [[sender cell] tag] Application Kit

図 5-2 Interface Builder におけるターゲットとアクションの設定 アクションがカスタムクラスのスーパークラスまたは既製の Application Kit クラスによって 処理される場合は 最初のステップは省略できます もちろん アクションメソッドを自分で 定義する場合は 必ずそれを実装する必要があります アクションとターゲットをプログラムで設定するには 次のメソッドを使ってメッセージをコ ントロールまたはセルオブジェクトに送信します - (void)settarget:(id)anobject; - (void)setaction:(sel)aselector; 次の例は これらのメソッドの使い方を示しています [acell settarget:mycontroller]; [acontrol setaction:@selector(deleterecord:)]; [amenuitem setaction:@selector(showguides:)]; ターゲットとアクションをプログラムで設定するのはメリットがあり 実際に 一定の状況で は考えられる唯一のアプローチになることもあります たとえば ネットワーク接続の有無や インスペクタウインドウのロードなど 実行時の状況に応じてターゲットやアクションを変化

2003 Apple Computer, Inc. (Last Updated May 7, 2003)

KeyKey KeyisKeykey key

2-1 - (id)tableview:(nstableview *)tv objectvaluefortablecolumn:(id)column row:(int)row { Employee *emp = [employees objectatindex:row]; if ( [[column identifier] isequaltostring:@ name ] ) { return [emp name]; } if ( [[column identifier] isequaltostring:@ dept ] ) { return [emp department]; } if ( [[column identifier] isequaltostring:@ title ] ) { // etc... } // etc... } 2-2 - (id)tableview:(nstableview *)tv objectvaluefortablecolumn:(id)column row:(int)row { Employee *emp = [employees objectatindex:row]; return [emp valueforkey:[column identifier]]; }

2003 Apple Computer, Inc. (Last Updated May 7, 2003)

2003 Apple Computer, Inc. (Last Updated May 7, 2003)