トップページ⇒tech
993コメント279KB

Objective-C [ObjC part:5];

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/07/22(木) 01:38:19
Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
 (Wikipedia:http://ja.wikipedia.org/wiki/Objective-C より)

Objective-C [ObjC part:4];
http://pc12.2ch.net/test/read.cgi/tech/1239721860/

Objective-C [ObjC part:3];
ttp://pc12.2ch.net/test/read.cgi/tech/1186543111/

Objective-C
ttp://pc11.2ch.net/test/read.cgi/tech/1106983092/

Objective-C
ttp://pc5.2ch.net/tech/kako/990/990574267.html
0002デフォルトの名無しさん2010/07/22(木) 01:40:01
*** プログラム技術板 ***
【マック】Macintoshプログラミング質問箱
ttp://pc11.2ch.net/test/read.cgi/tech/1113058054/

Mac OS Xでの開発環境はどれがイイ?
ttp://pc11.2ch.net/test/read.cgi/tech/1163314891/

*** 新・mac板 ***
Cocoaはさっぱり!!! version.15
http://pc11.2ch.net/test/read.cgi/mac/1277992217/

Macでプログラミング{10}
http://pc11.2ch.net/test/read.cgi/mac/1248682344/

Xcode part8
http://pc11.2ch.net/test/read.cgi/mac/1265669504/

iPod touch/iPhone ネイティブアプリ製作 ver.14
http://pc11.2ch.net/test/read.cgi/mac/1275056337/
0003デフォルトの名無しさん2010/07/22(木) 01:41:02
*** 本家 ***
Objective-C 2.0 プログラミング言語
ttp://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/

Introduction to The Objective-C 2.0 Programming Language
ttp://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html

そのほか英語
ttp://developer.apple.com/documentation/Cocoa/ObjectiveCLanguage-date.html

*** 書籍 ***
荻原本
http://amazon.jp/dp/4797346809

HMDTダイナミック本
http://amazon.jp/dp/4861006414
0004デフォルトの名無しさん2010/07/22(木) 01:41:46
ダイナミック Objective-C サイト
http://journal.mycom.co.jp/column/objc/

Apple のランタイムのソースコード (10.5.6)
http://www.opensource.apple.com/darwinsource/10.5.6/objc4-371.2/

英語のサイト
Objective-C 入門

http://cocoadevcentral.com/d/learn_objectivec/
Objective-C Style 1, 2 (変数名のつけかた等)
http://cocoadevcentral.com/articles/000082.php
http://cocoadevcentral.com/articles/000083.php

Mike Ash さん(Audio Hijack の中の人)のブログ、 Obj-C のランタイムの話が良く出る
http://mikeash.com/?page=pyblog/

C++ と Objective-C の文法の比較
http://ktd.club.fr/programmation/objective-c.php
0005デフォルトの名無しさん2010/07/22(木) 04:04:24
>>1乙


荻原本、BlocksやGCDを追記して改訂版出してくれないかな
0006デフォルトの名無しさん2010/07/23(金) 01:19:42
あげ
0007デフォルトの名無しさん2010/07/23(金) 17:06:37
なんとかBASIC!!!
0008デフォルトの名無しさん2010/07/24(土) 15:09:57
memory管理めんどくせ
0009デフォルトの名無しさん2010/07/24(土) 15:17:23
作法が理解出来ない奴はみなそう言う。
0010デフォルトの名無しさん2010/07/24(土) 16:19:05
memory管理めんどくせって思ってたら、
GCあるからretain/releaseしなくていいよって聞いたのに、
iOSにはGCないんだってさ。

memory管理めんどくせ
0011デフォルトの名無しさん2010/07/25(日) 07:10:53
GCは甘え
0012デフォルトの名無しさん2010/07/25(日) 21:03:48
解説本読んでると、メソッド名と同じ名前の変数名が使ってあって頭がこんがらがります。
こういうのOKなんですかね。
0013デフォルトの名無しさん2010/07/25(日) 21:21:52
>>12
JavaでもOKだね。
0014デフォルトの名無しさん2010/07/25(日) 21:42:44
>>13
そうなんですか。
OKでも使わない方がいいような気がするんですが、慣れたら平気なんでしょうね。
0015デフォルトの名無しさん2010/07/26(月) 19:34:25
retain/releaseでいいじゃんいいじゃん
0016デフォルトの名無しさん2010/07/28(水) 13:02:34
新・mac板から勝手に転載w
----
[SDK]iPhoneアプリ開発初心者質問箱7[touch][iPad]
http://pc11.2ch.net/test/read.cgi/mac/1278433229/


624 名前: 名称未設定 Mail: sage 投稿日: 2010/07/28(水) 00:08:55 ID: B8n5McN10
電子書籍アプリ自分で作ろうかと思ったけど、プログラミング未経験にはキツい!

だれかソースコード売ってください笑
ガチで買いたいです。
詳細はappleandbananaあっとmail.goo.ne.jp

•文字サイズ変更(大中小くらいで可)
•閉じたページ記憶&そっから再開
•ページ間に画像も入れれる
•タップでページスクロールバーがでる
•右側タップで戻る、左側タップで進む
----
0017デフォルトの名無しさん2010/08/05(木) 08:30:02
>>11
オートマ車を認められずに、マニュアル車に固執する臭いオッサンみたいだ
0018デフォルトの名無しさん2010/08/05(木) 09:08:38
オートマ車はブレーキとアクセルの踏み間違い事故が多すぎ
明らかな構造的欠陥に目をつぶって売り続けるのは信じられない
0019デフォルトの名無しさん2010/08/07(土) 03:52:34
iphoneアプリでhttpリクエストで取得したフィードのHTMLから、
特定のクラスのinnerHTML等を簡単に抜き出す方法を教えてくれ。
フィードの投稿一つずつをUITableViewのcellに置き換えたいです。
jqueryのようにできませんかね?webkitを少し調べればできるの?

教えてエロイ人!
0020デフォルトの名無しさん2010/08/07(土) 03:54:32
スレ違い
失せろ
0021デフォルトの名無しさん2010/08/07(土) 03:55:02
age
0022デフォルトの名無しさん2010/08/07(土) 03:57:27
>>20
間違えたの!
0023デフォルトの名無しさん2010/08/07(土) 04:00:33
板違い
0024デフォルトの名無しさん2010/08/07(土) 04:09:09
>>22
おまえマジでうぜえよ
社会のゴミだな
まったく価値が無い
0025デフォルトの名無しさん2010/08/07(土) 08:48:34
新規ファイルでUIVIEW SUBCLASSを作成したいんですが
Cocoa Touch Classの欄内に
UIVIEW SUBCLASSが存在しないので作成できません。
なにかインストールし忘れとかでしょうか?
どなたか教えてください。
0026デフォルトの名無しさん2010/08/07(土) 08:58:15
自分で書け、以上。
0027デフォルトの名無しさん2010/08/08(日) 18:56:49
そもそもある
0028デフォルトの名無しさん2010/08/09(月) 09:06:00
>>27
どのように作成すればよいのでしょうか?
自分の場合cocoa touch classの欄内が↓のようになっている為
uiview subclassが選択出来ません。

http://www.iphonedevcentral.com/wp-content/uploads/2009/08/tutorial015.jpg
0029デフォルトの名無しさん2010/08/09(月) 09:18:22
たのしそうだな・・・何年かしたら、できるようになるんじゃない?
0030デフォルトの名無しさん2010/08/09(月) 11:12:44
MT車の方が楽しい
0031デフォルトの名無しさん2010/08/09(月) 13:10:09
>>28
う〜ん、落ちが分かったような…
MacOSのバージョンとXcodeのバージョンは?
あとCPUの種類も聞いておこうかw
0032デフォルトの名無しさん2010/09/02(木) 14:13:07
@interface Foo : NSObject {
  NSString filePath;
}

-(id)initWithFilePath:(NSString)filePath;

@end

とメンバ変数と同じ名前の引数を渡したいのですが、

@implementation Foo

-(id)initWithFilePath:(NSString)filePath {
  self = [super init];
  if(self != nil){
    filePath = filePath;
  }
}

@end

とするとエラーになります。自身が持つメンバ変数を指定する方法はありませんか?
Javaで言うと、this.filepath = filepath; のような方法を教えてください。
0033デフォルトの名無しさん2010/09/02(木) 14:40:49
>> 32
基本的にはできないと思ったほうが幸せかも。
普通はメンバ変数をアンダースコア付きにするとか、仮引数を変更する。
NSString *_filePath;
- (id) initWithFilePath:(NSString *)path;

self->filePath = filePath; とか、self.filePath = filePath; は、できるけど警告出るし。

それよか、NSString に * がない方が気になるのだが…
0034デフォルトの名無しさん2010/09/02(木) 14:48:59
アンダースコアプレフィックスはAppleに予約されてる
いつか痛い目みるかもしれない

GoogleのObjC規約ではサフィックスにアンダースコア付けることになってる
http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml?showone=Variable_Names#Variable_Names
0035デフォルトの名無しさん2010/09/02(木) 15:24:03
>>33さん
ありがとうございます。
警告が出ると鬱陶しいので、アンダースコアを先頭に付けようと思ったのですが、
>>34さんが書かれているようにAppleが使いますね。
メンバ変数の末尾にアンダースコアを付ける記述を試してみようと思います。

お二人共、ありがとうございました。
(NSString *)になってないのは、単純にミスです。お恥ずかしい…。
0036デフォルトの名無しさん2010/09/02(木) 15:26:46
それの適応範囲はクラス名、メソッド名など。
よく読めば分かると思うけど、インスタンス変数名には適応されてない。
KVC のダイレクトアクセスで "_hoge" が検索対象のトップだしね。

google の規約を持ち出すのはなぜ?
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingIvarsAndTypes.html
0037デフォルトの名無しさん2010/09/02(木) 15:32:53
追記:
サフィックスにアンダースコアをつけると、KVC の検索対象に入らないから勧めない。
0038デフォルトの名無しさん2010/09/02(木) 15:51:19
>インスタンス変数名には適応されてない
されてる
だいたい実際に使われてるんだから普通に考えれば使いたいと思わない

>KVC のダイレクトアクセスで "_hoge" が検索対象のトップ
それこそまさに
Appleが使っているから→フレームワークのコア部分→すこしでも早くしたい
からであって、一般開発者が立ち入る領域ではない

>google の規約を持ち出すのはなぜ?
単に例として挙げた
他にObjCのまとまった規約の存在を知らないし

>KVC の検索対象に入らない
普通にプロパティ立てればいいだけ
0039デフォルトの名無しさん2010/09/02(木) 17:57:08
>>38
> 他にObjCのまとまった規約の存在を知らないし
 Cocoa なら、Appleのコーディングガイドラインをきちんと読むべきだ。その上で、
それでもなお、「適応されている」と主張するなら根拠となる記述を挙げて欲しい。
Appleのインスタンス変数命名規約には"_"の禁止なんて、どこにも書いてない。
お宅様の「普通」とやらはしらんけど、さっき貼った正規のガイドラインすら読まずに
適当なこと書くのは、世間一般でいう「普通」ではないようだね。

 インスタンス変数はクラス毎の名前空間にあるので、クラス間で被っても問題なく
使えるのが当然。例外は継承元のいずれかに同名のインスタンス変数があった場合だが、
これも理由つきでエラーが出るので安全。KVCも対応。これで禁止する理由は何かある?
メソッド名すら「かぶらないことが確実に確認できるなら」という条件付きで、
"_"プレフィックスが正式に認められているのに?

>少しでも早くしたい
速くするのに KVC なんて、メソッドなんて使わねーす。冗談も大概にしてくだせぇw
0040デフォルトの名無しさん2010/09/02(木) 18:16:38
まぁまぁ、そんなにカッカしないで、俺にファイルから1行ずつ読み込む方法を教えてくれよ。
NSFileHandleとNSDataを使ってあとはゴリゴリやるしか方法は無いのかね?
0041デフォルトの名無しさん2010/09/02(木) 18:22:11
NSString -getLineStart: end: contentsEnd: forRange: ?
0042デフォルトの名無しさん2010/09/02(木) 18:24:10
>>41
それこそ正に、NSData からゴリゴリやるの一例だろ。
0043デフォルトの名無しさん2010/09/02(木) 18:54:17
>>39
A prefix has a prescribed format. It consists of two or three uppercase
letters and does not use underscores or “sub prefixes.”


>メソッド名すら「かぶらないことが確実に確認できるなら」という条件付きで、
>"_"プレフィックスが正式に認められている

Don’t use the underscore character as a prefix for your private methods.
Apple reserves this convention.


>速くするのに KVC なんて、メソッドなんて使わねーす

あなたがあなたのコードの中でどうするかなんて問題にしてないです
フレームワークへのアクセスを言ってるんです


なんかドキュメントに書いてることと真反対のこと言い出すとか、触っちゃいけないタイプの人に触っちゃったようだ
みなさんごめんなさい、もう終わりにします
0044デフォルトの名無しさん2010/09/02(木) 18:56:54
一行づつ読み込むのにゴリゴリじゃない方法って、、、一行づつ読む時点でゴリゴリだろう
0045デフォルトの名無しさん2010/09/02(木) 19:49:36
>>43
>39の意味が分からないようですね。ガイドラインを、正確に、読みましょうね。
あなたの挙げたものはインスタンス変数の規約ではありません。
インスタンス変数についての規約には、次のように書いてあります。

@public は避けろ。データの格納の仕方より、interface に気を使え。
@private と @protected をうまく使え。
名前は的確に。
アクセスできる変数にはアクセサつけろ。

以上。これらから「インスタンス変数名に"_"を使うな」とは読めませんね。
0046デフォルトの名無しさん2010/09/03(金) 09:22:55
>>44
一気に取得する方法があるのかい+?
0047デフォルトの名無しさん2010/09/03(金) 09:35:48
まるごと読み込んでから、componentsSeparatedBy...:
0048デフォルトの名無しさん2010/09/03(金) 10:45:11
自己解決。
NSString stringWithContentsOfFile:encoding:error なんつー便利なメソッドがあるじゃないの。
これで取得して改行コードで区切っていけばオッケーって訳だな。
それがもしかしたら、>>47さんのメソッドなのかもしれない。
試してみるよ、ありがとう!
0049デフォルトの名無しさん2010/09/03(金) 13:41:38
>>48
自己解決って、、、質問の直後 >>41 で真っ先に回答が出てるじゃないか。
改行コードで区切ったりすんなよ。
0050デフォルトの名無しさん2010/09/03(金) 13:57:45
>>49
それこそ正に、NSData からゴリゴリやるの一例だろ。
0051デフォルトの名無しさん2010/09/03(金) 16:14:15
巨大なファイルを扱うから NSFileHandle で部分的に読む込もうとしてるのかと思ったら、それ以前の問題だったらしい。
0052デフォルトの名無しさん2010/09/03(金) 20:13:30
ファイルの中身がそのまま見えるイメージで良いならmmap()するのが一番簡単
メモリ中に置かれてるのと同じ処理で良いし、巨大なファイルでも仮想記憶システムが
面倒見てくれるので無駄なコピーも発生しない。
0053デフォルトの名無しさん2010/09/08(水) 19:11:09
>>45
ガイドラインには、「インスタンス名の頭に_を使うな」とは書いてないかもしれません。
しかし、スーパークラスとサブクラスで同じ名前のインスタンス変数を宣言することはできません。(コンパイルエラーになります)
そして、Cocoaのクラスのインスタンス変数名は全て_から始まっています。
なので、実質的に「インスタンス変数名の頭に_は使えない」となります。
逆に言うと、インスタンス変数名の頭に_を使わなければ、Appleとの競合を確実に避けられるということです。
0054デフォルトの名無しさん2010/09/08(水) 20:03:54
>>53
まだやるんですかぁ・・・書いてないんだから、使ってもいいでしょうに。
>スーパークラスとサブクラスで同じ名前のインスタンス変数を宣(ry
安全にコンパイルエラーになるなら、変数名変えればいいだけ。>39で言及済みです。

>そして、Cocoaのクラスのインスタンス変数名は全て_から始まっています。
誠に残念ですが、isa は "_isa" ではない。よって "_" が無くてもダブる可能性がある。

反論終わり。勝手にガイドラインを拡大して、それを広めないでくださいな。
あなたのスタイルを批判しているのではない。
不正確な情報を、さも正しいかのように言うのを批判しているのみ。
0055デフォルトの名無しさん2010/09/08(水) 20:18:33
そもそも>>39が嘘ばっかりやん
0056デフォルトの名無しさん2010/09/08(水) 21:01:18
具体的にどこでしょう?ぜひ改めさせていただきたいので、ご指摘願います。
タイポ ○適用 ×適応
メソッド名の "_" は誤解を招いたかもしれませんが、ガイドラインにある "BF_..." の例。
「名前空間」が同じく誤解を招くかもですが、継承を含めた ivar[] のことです。
0057デフォルトの名無しさん2010/09/08(水) 22:34:40
AT車の便利さと比較してる奴は馬鹿か?
AT車MT車は一般人が使うものだろ。
一般人が使うものなら楽であればあるほどいい。
しかしおまえらはプログラマという専門家だろ?楽に走ってどうすんだ。
楽な言語で楽に書いて細かい原理は知りませ〜ん、じゃあ専門家とは言えんぞ。
0058デフォルトの名無しさん2010/09/08(水) 23:37:13
昔はObjective-Cは専門家しか使わなかったけど
iPhogeが出て来てここ数年でがらっと風向きが変わった
0059デフォルトの名無しさん2010/09/09(木) 00:14:15
楽な言語で楽に書いて詳細も知ってます、
だろ普通は

0060デフォルトの名無しさん2010/09/09(木) 12:41:33
Javaで書きたいiPhoneアプリ
0061デフォルトの名無しさん2010/09/09(木) 13:33:23
Javaだけはないわ
0062デフォルトの名無しさん2010/09/09(木) 18:38:59
ヌルポ
0063デフォルトの名無しさん2010/09/11(土) 03:42:44
すいません何故こうなるか教えてください。

ヘッダで宣言したインスタンス変数に、実装で型を指定せずにallocしようとしたら、その変数は分からないと言われました。

反対に、ヘッダで宣言したNSArray*変数を実装でも型を使用しようとしたら名前ダブってると言われます。

同じように感じるその二つに、二通りの結果があるのは何故でしょう?
0064デフォルトの名無しさん2010/09/11(土) 09:13:28
>>62
ガッ!!
0065デフォルトの名無しさん2010/09/11(土) 09:49:23
>>63 ソース書いてみて
0066デフォルトの名無しさん2010/09/11(土) 10:30:02
>>65
ありがとう。今外出しているので晩に書かせていただきます。
0067デフォルトの名無しさん2010/09/11(土) 11:28:34
>60
そういや2008年頃に、SunがiPhone用のJava VMを作成するとかいうのが
ニュースにあったような気がするけど、どうなったのかな?
0068デフォルトの名無しさん2010/09/11(土) 17:54:12
>>67
Jobsが禁止した。
0069デフォルトの名無しさん2010/09/11(土) 18:20:33
新しい規約だと各々がJAVA VMを内包するという力技ならOK
かな?
0070デフォルトの名無しさん2010/09/11(土) 18:59:57
>>69
え、できるようになったのは確定事項? もしそうなら嬉しい
Java VMじゃないけど、SchemeのSECDマシンが動けばいいのにと妄想してた
0071デフォルトの名無しさん2010/09/11(土) 21:43:51
>>70
外から見えるVMは改定でもダメ。
0072デフォルトの名無しさん2010/09/11(土) 22:18:43
>>71
iPhoneアプリケーションに、Obj-Cで書いたSECDエンジンと
SECDコード(=Schemeソースをコンパイルしたオブジェクト)を内蔵させる、
という考え方なんだけど、それでもダメ?
ユーザからは、普通のiPhoneアプリにしか見えないはずなんだ。
SECDエンジンなら(Java VMよりも)単純だから、
自分で作ってみようかと妄想してたんだけど....
0073デフォルトの名無しさん2010/09/11(土) 22:51:02
昔々の事じゃ、Cocoa-JavaというJavaからCocoaフレームワーク呼ぶ物がMac用にあってのう。
Objective-Cになれた開発者にはえらい不評だったそうな。
0074デフォルトの名無しさん2010/09/11(土) 23:01:44
自分は結局Cocoa-Javaは使わずじまいだったが、
Javaは(少なくとも当時のJavaは)静的な言語だったから、
Objective-Cデベロッパからすれば、
柔軟性の無い堅苦しいものに見えたのだろね
0075デフォルトの名無しさん2010/09/11(土) 23:04:24
Obj-C習得者がいちいち Cocoa-Java に手を出すことあるかね?
自分はまったく触らなかったから、特に思うことはないな。
0076デフォルトの名無しさん2010/09/12(日) 09:17:58
Javaを使う意味の一つに、マルチプラットフォームって言うのがあるけど、Macだけで動かすつもりならJavaを使う必要なんてないだろうね
0077デフォルトの名無しさん2010/09/12(日) 10:03:20
Objective-Cのような欠陥言語は使いたくもない。
0078デフォルトの名無しさん2010/09/12(日) 13:07:02
>>77
コード書くほうに欠陥があるのでは? 裸のCで書いても問題ないわけだし。
0079デフォルトの名無しさん2010/09/13(月) 00:46:50
>>72
新しい規約なら問題ない筈。面白そう。
0080デフォルトの名無しさん2010/09/13(月) 09:12:35
>>77
どういった部分に欠陥があるのかkwsk
0081デフォルトの名無しさん2010/09/13(月) 14:58:20
ひじょーに個人的な思いを横レスすると、Dictionary のような多用する物が重くて
stl を併用しなきゃならない辺りがオタ心をくすぐって嬉しいよな。
0082デフォルトの名無しさん2010/09/23(木) 12:54:25
TableViewに複数のセクションがあり、各セクションごとにセルを追加/削除できる
プログラムがあれば教えて頂きたいのですが、
よろしくお願いします。
0083デフォルトの名無しさん2010/09/23(木) 13:46:26
NSTableView?UITableView?
0084デフォルトの名無しさん2010/09/23(木) 14:39:09
>>83
UITableViewです。
お手数おかけしますがよろしくお願いします。
0085デフォルトの名無しさん2010/09/23(木) 17:08:38
@encode ディレクティブでとれる const char * から、ビットフィールドを含む
構造体のサイズを計算したいのですが何かよい関数ご存知ありませんか?
NSGetSizeAndAlignment はビットフィールドを処理できないようで、SIGABRT が
でます。ビットフィールド無しだと計算してくれるのですが…
 また、10.3.* ~ 10.5.* の gcc_os に objc_sizeof_type() というのを見つけたのですが、
bit field のエンコード形式がどうも実際(10.5SDK)とは違っていました。
 これは修正して自分で組むしか無いでしょうか?
0086デフォルトの名無しさん2010/09/23(木) 18:35:39
>>82>>84
自分で調べる気、やる気まったく無しw
書いておけば適当に解答返ってくるだろって雰囲気丸出し。
0087デフォルトの名無しさん2010/09/23(木) 18:38:55
>>85
なんか難しいことをしようとしてる様に見えるけど、大元の目的が何なのかを書けば
誰か別の方法を教えてくれるかも。

struct st1 {char flag : 1;};
struct st2 {int flag : 1;};
@encodeの文字列は両方b1だけど、sizeofしたら1と4だよね。
だから@encodeの文字列からはできないんじゃ?
0088デフォルトの名無しさん2010/09/23(木) 19:22:06
>>87
レスどうもです。具体的には自前のデータ領域付きのArrayを作りたいと思ってまして。
CFArray + 領域、みたいな感じで、構造体に応じてデータ領域を確保できればなーと。
@encode の情報だけで何とかならないかなと思っていたのです。ご指摘の問題を見ると
確かに難しそうですね。やりたかった事は sizeof(type) 渡せば解決するんです。

ですが、NSGetSizeAndAlignment がビットフラグで SIGABRT だすのを知ったので、
じゃあどうやって NSValue なんかは処理しているのかな?と調べていたのです。
で、objc_sizeof_type() にたどり着いた訳ですがどうも違う。
 手がかりがなくなったので、ご存知の方がいるかもしれないと書き込んだ次第です。
0089デフォルトの名無しさん2010/09/23(木) 19:44:22
>>84
んじゃUITableView Class Reference見て
Table View Programming Guide for iOSよっく読んでから
Related sample codeの中から好みに合うの探してw
0090デフォルトの名無しさん2010/09/23(木) 20:01:04
>>88
NSValueにビットフィールドありの構造体を渡したらnullが返らない?
0091882010/09/23(木) 20:28:59
>>90
げ!確かに null が返ってきますね。
何でも入るもんだと思い込んでいました、お恥ずかしい。
てことは、やはり@encode情報からはsizeはとれないと思った方が良さそうですね。
いろいろとご指摘、ありがとうございます。
0092デフォルトの名無しさん2010/09/27(月) 02:54:14
教えてください。
ビューを編集する様な処理をして、次の行に進んだところでブレークポイントを入れて見ると、
まだビューがその編集に反映してなくて、そのクラスの処理が終った時点でやっと反映されるのですが、
それを編集直後に反映させるにはどうしたら良いでしょうか。
0093デフォルトの名無しさん2010/09/27(月) 05:45:27
エスパーすると -setNeedsDisplay: or -display やれ
0094デフォルトの名無しさん2010/09/27(月) 09:41:32
相互に定義しあうprotocolってうまい書き方ないでしょうか。
@protocol protocolA
- (void) setTarget:(id <protocolB>)obj;
@end

@protocol protocolB
- (void) setTarget:(id <protocolA>)obj;
@end

当然ですが、コンパイルが通りません。

classの場合、@class hoge、とか書いておくと双方向での参照を
難なく定義出来ると思いますが、protocolの場合はどうすればよい
でしょう。
0095デフォルトの名無しさん2010/09/27(月) 09:47:43
@protocol protocolB;
@protocol protocolA
- (void) setTarget:(id <protocolB>)obj;
@end

@protocol protocolA;
@protocol protocolB
- (void) setTarget:(id <protocolA>)obj;
@end
0096942010/09/27(月) 09:56:35
ばっちり通りました。ありがとうございました。

@protocol ESProtocolServer;
@protocol ESProtocolClient;

@protocol ESProtocolServer <NSObject>
- (int) idleTime;
- (oneway void) shutdownServer;
- (oneway void) setClient:(id <ESProtocolClient>)client;
- (BOOL) receiveReq:(NSDictionary *)msg type:(int)type index:(int)index;
@end

@protocol ESProtocolClient <NSObject>
- (oneway void) setServer:(id <ESProtocolServer>)server;
- (BOOL) receiveReply:(NSDictionary *)msg type:(int)type index:(int)index;
@end

0097922010/09/28(火) 12:19:46
>>93
ありがとうございます。

しかし、mainViewControllerにUIViewのインスタンスを合成して、
[self setNeedsDisplay]
を表示させたいタイミングに入れましたが、
そうしていない時と同じように、スレッドが終了するまで描画されません。

何か根本的に勘違いしてますでしょうか私は、、。
0098デフォルトの名無しさん2010/09/28(火) 12:34:03
UIKitの処理は指示してすぐに全部その場でやってるとは限らないよ
たぶんスレッドを長い間止めないための最適化だと思うけど
メソッド呼んでもRunLoopに処理を登録するだけで、実際に処理されるのは
イベントループが一回以上回った後なんてのはたくさんある
0099デフォルトの名無しさん2010/09/28(火) 12:40:34
というかsetNeedsなら当然の結果だろ。
0100922010/09/28(火) 22:11:13
>>98
ありがとうございます。

UIViewは基本好きな時に再描画出来ない様ですね。
別スレッドに描画メソッドを入れて、
[self performSelectorOnMainThread:@selector(メインスレッド名) withObject:nil waitUntilDone:TRUE];
でメインループを呼びましたら、描画スレッドはそのままスレッドから抜けてくれて、その際に再描画してくれました。
そのメソッドが何ものかハッキリ分かりませんが、支障が出ない事を祈ります。
0101922010/09/28(火) 22:13:19
上のですが、普通にメインループを呼んだだけだと、描画スレッドが処理が戻ってくるまで終わってくれなくて再描画してくれませんでした。
■ このスレッドは過去ログ倉庫に格納されています