Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
(Wikipedia:http://ja.wikipedia.org/wiki/Objective-C より)
前スレ
Objective-C [ObjC part:8.1];
http://mevius.2ch.net/test/read.cgi/tech/1414816517/
Objective-C [ObjC part:8];
http://peace.2ch.net/test/read.cgi/tech/1356341803/
Objective-C [ObjC part:7];
http://toro.2ch.net/test/read.cgi/tech/1330330906/
Objective-C [ObjC part:6];
http://toro.2ch.net/test/read.cgi/tech/1313891268/
Objective-C [ObjC part:5];
http://hibari.2ch.net/test/read.cgi/tech/1279730299/
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
探検
Objective-C [ObjC part:9];
■ このスレッドは過去ログ倉庫に格納されています
2017/11/17(金) 21:00:33.77ID:oYmLZZ1y
56デフォルトの名無しさん
2018/02/25(日) 12:03:36.95ID:v4cEluZE performSelecterで複数の引数を指定するにはどうすればよいですか?
2018/02/25(日) 14:39:30.86ID:JPXzVKnW
performSelector:withObject:withObject:
58デフォルトの名無しさん
2018/02/25(日) 17:21:55.57ID:v4cEluZE ありがとうございます
3つからは配列しかないでしょうか
3つからは配列しかないでしょうか
2018/02/25(日) 19:59:03.61ID:bmk994+o
辞書にキー値で入れて渡せばいくらでも
2018/02/25(日) 23:04:26.61ID:EklcbxjR
ドキュメントのニュアンス的に書いてあるようにperformSelector:は簡易版のようなもので、本来NSInvocationを使うのが筋だと思ってる
まあ、NSInvocationはめんどくさいから普通に>>59のいうやり方にするけど
NSInvocation使ってperformSelector:のオレオレバージョンメソッド追加したりも簡単だけど、それもあんましないな
まあ、NSInvocationはめんどくさいから普通に>>59のいうやり方にするけど
NSInvocation使ってperformSelector:のオレオレバージョンメソッド追加したりも簡単だけど、それもあんましないな
61デフォルトの名無しさん
2018/02/26(月) 01:16:10.13ID:tsC3awB5 他で既にたくさん呼ばれている関数の引数が3つ以上だと使えないですね。
Timerで代替できるけど、ちょっと流れが読みにくくなっちゃうんですよね
Timerで代替できるけど、ちょっと流れが読みにくくなっちゃうんですよね
62デフォルトの名無しさん
2018/02/26(月) 01:19:45.75ID:tsC3awB5 progressviewを読んでも表示されないときに、処理を一旦をOSに返し?表示させるために使ってますが、他の良い方法はありますか?
2018/02/26(月) 01:59:59.33ID:4buxL9WA
流れが読めないなw
2018/02/26(月) 03:20:00.69ID:4buxL9WA
performSelector:withObject:withObject:... の、ただ引数が増えましたバージョンはNSInvocation使って普通にできたな
Timer〜処理を一旦をOSに〜がafterDelay:付きのような気ががするが、そもそもそれは複数引数なんてないしな
afterDelay:付きはcancelPreviousPerformRequestsWithTarget:selector:object:をどう実現すんのかわからんが、それいらんのだったら同じくでできる
Timer〜処理を一旦をOSに〜がafterDelay:付きのような気ががするが、そもそもそれは複数引数なんてないしな
afterDelay:付きはcancelPreviousPerformRequestsWithTarget:selector:object:をどう実現すんのかわからんが、それいらんのだったら同じくでできる
2018/02/26(月) 03:31:09.46ID:MMVJYAud
単に次のrunloop cycleで処理を実行させたいということのような気がするんで
-[NSOpeartionQueue addOperationWithBlock:] でいいんじゃないかな (あれば、だけど)
-[NSOpeartionQueue addOperationWithBlock:] でいいんじゃないかな (あれば、だけど)
66デフォルトの名無しさん
2018/02/26(月) 09:56:36.23ID:tsC3awB5 キャンセルというのがあるんですね!
初めて知りました。
addOperation試してみます。
勉強になりました。
ありがとうございます。
初めて知りました。
addOperation試してみます。
勉強になりました。
ありがとうございます。
2018/03/25(日) 22:05:45.15ID:qhw5X0vA
今日からObjective-Cを勉強し始めた初心者です
OSX/macOS用のデスクトップアプリの製作を目標にしています
ファイル出力で躓いている点がありアドバイス頂けませんでしょうか
NSStringのwriteToURLでテキストファイルを出力したいのですが、Callback関数内で実行すると
EXC_BAD_ACCESSエラーになってしまいます
試しにコピペでCallback関数の外で実行するとエラーになりませんでした。コードはこんな感じです
NSString *hoo = @"test";
[hoo writeToURL: savePanelURL atomically:true encoding:NTUTF8StringEncoding error:nil]
savePanelURLはsavePanelで入力しています
USB機器に1byte送信して、その結果をCallbackで受信したら受信結果をファイルに書き出すのが目的です
ご助言お願いします
OSX/macOS用のデスクトップアプリの製作を目標にしています
ファイル出力で躓いている点がありアドバイス頂けませんでしょうか
NSStringのwriteToURLでテキストファイルを出力したいのですが、Callback関数内で実行すると
EXC_BAD_ACCESSエラーになってしまいます
試しにコピペでCallback関数の外で実行するとエラーになりませんでした。コードはこんな感じです
NSString *hoo = @"test";
[hoo writeToURL: savePanelURL atomically:true encoding:NTUTF8StringEncoding error:nil]
savePanelURLはsavePanelで入力しています
USB機器に1byte送信して、その結果をCallbackで受信したら受信結果をファイルに書き出すのが目的です
ご助言お願いします
2018/03/25(日) 22:14:01.26ID:qhw5X0vA
すみません、上の質問は取り下げとさせて下さい
スレ汚し失礼しました
スレ汚し失礼しました
6967
2018/03/25(日) 22:57:04.08ID:qhw5X0vA 67です。改めて質問させて下さい
savePanelで保存ファイル名を入力したらUSB機器に送信し、Callbackで結果を受信したらそれを
ファイルに出力する、と言う処理を考えています
savePanelから得たURLを直接Callback関数に渡す事は出来ないので一旦publicな変数に
格納していますが、Callback関数がこのNSURLを参照するとEXC_BAD_ACCESS例外に
なってしまいます。Callback関数内でNSLog()でNSURL変数を参照すると例外が発生しました
callback関数が別スレッドで動いているからでしょうか?しかしながら、unsigned charの配列
なんかは問題なく参照出来ています。クラスインスタンスだけだめなんでしょうか。
解決方法についてご助言頂けますと幸いです
savePanelで保存ファイル名を入力したらUSB機器に送信し、Callbackで結果を受信したらそれを
ファイルに出力する、と言う処理を考えています
savePanelから得たURLを直接Callback関数に渡す事は出来ないので一旦publicな変数に
格納していますが、Callback関数がこのNSURLを参照するとEXC_BAD_ACCESS例外に
なってしまいます。Callback関数内でNSLog()でNSURL変数を参照すると例外が発生しました
callback関数が別スレッドで動いているからでしょうか?しかしながら、unsigned charの配列
なんかは問題なく参照出来ています。クラスインスタンスだけだめなんでしょうか。
解決方法についてご助言頂けますと幸いです
2018/03/26(月) 00:32:44.01ID:epnL0PWD
Callbackにデリゲートも持たせる
iokitのUSB関連のコールバックは基本そういう設計になってる
iokitのUSB関連のコールバックは基本そういう設計になってる
2018/03/26(月) 11:00:28.93ID:nKFwl68E
情報量が足りないから推測するしかないけど、メモリ管理がきちんとできてなくて public な変数とやらがdangling pointer になっているような気がする
2018/03/26(月) 20:16:29.50ID:Nh3QPOgS
>>70
ありがとうございます。Delegateですか・・・
グーグッて見たんですが世の中のサンプルは全部delegate側と被delegate側でクラスが分かれてる
例ばかりで、以下のような1つのクラス内でdelegateをデリゲートする方法が分かりませんでした・・・
@interface hoo : NSObject {
NSURL *url;
}
- (void) sendUSBData;
static void receiveUSBDataCallback(・・・・・・);
@end
sendUSBDataの中でurlを設定した後にUSB機器に向けて送信しています。その際にCallbac関数に
receiveUSBDataCallbackを指定します
Callback関数内で受信結果をファイルに書き出したいのですが、
NSLog(@"%@", url) ;
と書いた行でEXC_BAD_SCCESSになります
ありがとうございます。Delegateですか・・・
グーグッて見たんですが世の中のサンプルは全部delegate側と被delegate側でクラスが分かれてる
例ばかりで、以下のような1つのクラス内でdelegateをデリゲートする方法が分かりませんでした・・・
@interface hoo : NSObject {
NSURL *url;
}
- (void) sendUSBData;
static void receiveUSBDataCallback(・・・・・・);
@end
sendUSBDataの中でurlを設定した後にUSB機器に向けて送信しています。その際にCallbac関数に
receiveUSBDataCallbackを指定します
Callback関数内で受信結果をファイルに書き出したいのですが、
NSLog(@"%@", url) ;
と書いた行でEXC_BAD_SCCESSになります
2018/03/27(火) 00:01:46.90ID:qoAxdzUq
これ単にコールバック関数まで来たときには既に NSURL *url が消えてなくなってるんと
ちゃうの?
ちゃうの?
2018/03/27(火) 00:28:21.89ID:6VXiCpbu
hoo のインスタンスをどうやって receiveUSBDataCallback に渡してるの?
2018/03/27(火) 01:23:52.61ID:xcLBevCX
@interface hoo ...
@end
の中に入れてることから、そこに入れても hoo と全く無関係な単なる Cの関数 だとは思ってなさげ
@end
の中に入れてることから、そこに入れても hoo と全く無関係な単なる Cの関数 だとは思ってなさげ
2018/03/28(水) 23:12:49.99ID:GcQCgl46
hooで自信のインスタンスを返すクラスメソッド作っておけば良い
そこからhooを取得してurlを渡すゲッターメソッドも作っておけば良い
それだけの話でしょ
そこからhooを取得してurlを渡すゲッターメソッドも作っておけば良い
それだけの話でしょ
2018/03/28(水) 23:52:03.04ID:HBbH3CfN
Callbackにユーザ定義ポインタ(void *)あるんじゃないの
何使ってるのか知らんけど、USBなんちゃらRecieveなんちゃらだったかは、Callback登録するときに一緒に渡して、Callback呼ばれる時にはそれが引数と渡ってくるようになってたようだけど
であれば、それでurlだのfooだの渡すだけじゃね
何使ってるのか知らんけど、USBなんちゃらRecieveなんちゃらだったかは、Callback登録するときに一緒に渡して、Callback呼ばれる時にはそれが引数と渡ってくるようになってたようだけど
であれば、それでurlだのfooだの渡すだけじゃね
2018/03/28(水) 23:58:50.40ID:HBbH3CfN
ああ、EXC_BAD_SCCESSなら、それやってて意図せず(ARCをよくわかってないと)に、元のインスタンスがCallback呼ばれる時にはすでにdeallocされてるとかありそう
2018/03/28(水) 23:59:11.49ID:GcQCgl46
基本的なiokitの設計ならコールバックはそうなってるけど
libusbとかでやってるなら話は変わってきそう
libusbとかでやってるなら話は変わってきそう
2018/04/01(日) 14:42:04.87ID:T4ssCAAm
皆さんはキーボードはUS使ってる?
私は場所によってUSだったりJISだったりするんだけど
objcの場合@や{}[]使う事が多いからjisの方が書き易い気がしてきた
どうなんだろ
私は場所によってUSだったりJISだったりするんだけど
objcの場合@や{}[]使う事が多いからjisの方が書き易い気がしてきた
どうなんだろ
81デフォルトの名無しさん
2018/04/02(月) 04:11:07.55ID:3ewhMOuh USになれたらUSが合理的
2018/04/02(月) 04:27:54.19ID:ZyMoq4+j
>{}[]使う事が多いからjisの方が書き易い
これがイミフでそういう話には進まないな
これがイミフでそういう話には進まないな
2018/04/02(月) 12:17:51.99ID:Qs9eq6u+
USキーボードってかな入力できるの?
ローマ字変換のみ?
ローマ字変換のみ?
2018/04/02(月) 14:03:58.45ID:Iiz9jeIK
>>82
俺は意味分かった。
俺は意味分かった。
2018/04/02(月) 19:37:02.92ID:g3r8EJqq
>>83
できるけどキーの数足りてないので何らかの割り当ては必要
できるけどキーの数足りてないので何らかの割り当ては必要
86デフォルトの名無しさん
2018/04/02(月) 20:04:40.50ID:se2Xdp9V 両方つかったけど
あまりかわらない
慣れかな
インテリジェンスだし
そんな連続でキーパンチ続けないし
あまりかわらない
慣れかな
インテリジェンスだし
そんな連続でキーパンチ続けないし
2018/04/06(金) 17:07:16.72ID:lWZnsSZL
bitFlyerがObjective-C共同開発者Tom Love氏を顧問に、ブロックチェーン向け言語開発に取り組む
https://jp.techcrunch.com/2018/04/06/tomlove-joins-bitflyer/
https://jp.techcrunch.com/2018/04/06/tomlove-joins-bitflyer/
2018/05/12(土) 11:01:20.39ID:pDgCeBjY
共同ツール 1
https://seleck.cc/685
https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり
共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/
共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903
ttps://goodpatch.com/blog/sketch-plugins/
https://seleck.cc/685
https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり
共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/
共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903
ttps://goodpatch.com/blog/sketch-plugins/
89デフォルトの名無しさん
2018/05/23(水) 19:57:46.03ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
4NUVT
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
4NUVT
90デフォルトの名無しさん
2018/07/05(木) 01:41:32.11ID:RfoszcD2 5S1
91デフォルトの名無しさん
2019/03/09(土) 10:31:39.70ID:Oh2tQqB7 今のObjective-C本はMacOSXでアプリ開発する前提の本ばかりで読みづらい
GNUstep上で環境作れば少しはマシになる
GNUstep上で環境作れば少しはマシになる
2019/04/16(火) 20:07:51.15ID:2iEm/+NC
MAC OS COCOA プログラミング(4版)っていう解説書(XCODE 4.5準拠)で
macOSのcocoa Appのプロジェクトを作成してナビゲーターでて
xxx.xibを選択してAssistant editorを表示するとAppDelegate.hが表示され@property (assign) IBOutlet NSWindow *window;
@end
が挿入されるって書いてある(Page 109)んだけど
うちのXCODE 10.2の環境だとxibを選択して「View」メニューからAssistant editorを表示すると
AppDelegate.mが表示されてそこに
@property (assign) IBOutlet NSWindow *window;
@end
が追加されてるという妙なことになるんだけどAssistant Editorの表示を変えられる設定とかあるの?それともXCODE1Oの仕様?
macOSのcocoa Appのプロジェクトを作成してナビゲーターでて
xxx.xibを選択してAssistant editorを表示するとAppDelegate.hが表示され@property (assign) IBOutlet NSWindow *window;
@end
が挿入されるって書いてある(Page 109)んだけど
うちのXCODE 10.2の環境だとxibを選択して「View」メニューからAssistant editorを表示すると
AppDelegate.mが表示されてそこに
@property (assign) IBOutlet NSWindow *window;
@end
が追加されてるという妙なことになるんだけどAssistant Editorの表示を変えられる設定とかあるの?それともXCODE1Oの仕様?
2019/04/16(火) 20:29:54.10ID:OvEJzEbO
本が古い、その対象のXcodeが古い。たぶん、Xcode 10よりもずーっと前に変わったとこかな
無名カテゴリ
@interface AppDelegate ()
@end
ってのが、4.5 の後のどこかで使えるよになって、パブリックでないものは、.m に書く書けるようになったので、.h ではなく .m になったのだよ
無名カテゴリ
@interface AppDelegate ()
@end
ってのが、4.5 の後のどこかで使えるよになって、パブリックでないものは、.m に書く書けるようになったので、.h ではなく .m になったのだよ
2019/04/17(水) 04:19:02.53ID:eleXOijC
Xcode 4.5ってよくそんな古い本探してきたな。
2019/04/17(水) 04:59:53.21ID:raOmrg+9
https://www.amazon.co.jp/MAC-OS-X-COCOAプログラミング-第4版/dp/4501552700
https://www.tdupress.jp/book/b350041.html
普通に現役として売っていたり。うーむ...よく売るな...ないよりマシというのもあるかもしれないが。中古でも結構いい値で売ってるし
東京電機大学出版局か...Xcodeの部分くらい書き換えてもよさそうだが。執筆者もそのくらい勝手にやるのを認めるだろう。東京電機大学と銘打っているなら
https://www.tdupress.jp/book/b350041.html
普通に現役として売っていたり。うーむ...よく売るな...ないよりマシというのもあるかもしれないが。中古でも結構いい値で売ってるし
東京電機大学出版局か...Xcodeの部分くらい書き換えてもよさそうだが。執筆者もそのくらい勝手にやるのを認めるだろう。東京電機大学と銘打っているなら
2019/04/17(水) 05:15:24.58ID:raOmrg+9
https://www.amazon.com/Cocoa-Programming-OS-Ranch-Guides/dp/0134076958
原本は5版だな。April 24, 2015とびみょうだけど(たぶん無名カテゴリに対応はしてるかな)。何年もほったらかしで古いのは売るのね
1907年(明治40年) 電機学校創立。
1914年(大正3年) 電気雑誌『オーム』(OHM)創刊。
1922年(大正11年) 電機学校出版局の雑誌部が独立し、オーム社となる。
オーム社関連なのか。がっかりだよ。古き良き(よくない)日本の技術出版社(が出す日本語版)らしいけど
原本は5版だな。April 24, 2015とびみょうだけど(たぶん無名カテゴリに対応はしてるかな)。何年もほったらかしで古いのは売るのね
1907年(明治40年) 電機学校創立。
1914年(大正3年) 電気雑誌『オーム』(OHM)創刊。
1922年(大正11年) 電機学校出版局の雑誌部が独立し、オーム社となる。
オーム社関連なのか。がっかりだよ。古き良き(よくない)日本の技術出版社(が出す日本語版)らしいけど
9792
2019/04/17(水) 08:36:55.94ID:Y39+Io2y このスレ過疎ってたのでレス付くか心配してたんですけど皆さんレスありがとうございます
確かに参考書は古本を買いました
色々調べたけど、Objectibe-CでmacOSの開発参考書で新しいの見当たらないんですよね
英語版の5th edition も入手したんですが、アプリのコーディングは言語がswiftになってました
最近のXCODEの参考書はiOS/Swiftだけみたいですね
macOS/Object-Cでの開発は消えていくんですかね
macOS/Object-Cを勉強する良い参考書/サイトなんかあれば教えてください
確かに参考書は古本を買いました
色々調べたけど、Objectibe-CでmacOSの開発参考書で新しいの見当たらないんですよね
英語版の5th edition も入手したんですが、アプリのコーディングは言語がswiftになってました
最近のXCODEの参考書はiOS/Swiftだけみたいですね
macOS/Object-Cでの開発は消えていくんですかね
macOS/Object-Cを勉強する良い参考書/サイトなんかあれば教えてください
98デフォルトの名無しさん
2019/05/19(日) 22:36:23.14ID:VOkMFAEn 純粋にObjective-Cの話題とは言えないですが、もしよかったらアドバイスをいただけると
ありがたいです。
マイナー言語の独自IDE上で、Cocoaブリッジを使ってIMによる日本語のインライン・インプットが
出来るようにしようとしています。必要に迫られてObjective-Cに対応するコードを書いてはいますが、
Cocoa や Objective-C のプログラミングの経験はほぼありません。
setMarkedText:selectedRange: で渡される変換途中のNSAttributedString文字列を、
attribute:atIndex:effectiveRange: を使ってビジュアル的にはアンダーラインの切れ目で表現される
変換文節に分割しようとしているんですけど、attribute: への NSUnderlineStyleAttributeName や
NSUnderlineColorAttributeName の指定では切れ目のところでも同じアンダーラインが連続している
という扱いになってしまう様で、期待通りになりません。
そもそも、日本語変換中の(同じ細さの)アンダーラインが切れている様子は NSAttributedString の
アトリビュートの指定で実現可能なのでしょうか。
またそれが出来るとして(←出来るのだろうと思いますが)、その切れ目の場所を知ることは出来ますか。
ありがたいです。
マイナー言語の独自IDE上で、Cocoaブリッジを使ってIMによる日本語のインライン・インプットが
出来るようにしようとしています。必要に迫られてObjective-Cに対応するコードを書いてはいますが、
Cocoa や Objective-C のプログラミングの経験はほぼありません。
setMarkedText:selectedRange: で渡される変換途中のNSAttributedString文字列を、
attribute:atIndex:effectiveRange: を使ってビジュアル的にはアンダーラインの切れ目で表現される
変換文節に分割しようとしているんですけど、attribute: への NSUnderlineStyleAttributeName や
NSUnderlineColorAttributeName の指定では切れ目のところでも同じアンダーラインが連続している
という扱いになってしまう様で、期待通りになりません。
そもそも、日本語変換中の(同じ細さの)アンダーラインが切れている様子は NSAttributedString の
アトリビュートの指定で実現可能なのでしょうか。
またそれが出来るとして(←出来るのだろうと思いますが)、その切れ目の場所を知ることは出来ますか。
2019/05/20(月) 03:32:50.77ID:b4QONOVW
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/TextAttributes/Concepts/AboutTextAttributes.html#//apple_ref/doc/uid/20001804-BBCFEBHA
Temporary Attributes
で指定して
drawUnderlineForGlyphRange:underlineType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:
で描画するコードを書く
かな
Cocoaブリッジを使って〜とかなんで自分でやらなきゃならない&どこまでCCocoaなのかわからんけど
Temporary Attributes
で指定して
drawUnderlineForGlyphRange:underlineType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:
で描画するコードを書く
かな
Cocoaブリッジを使って〜とかなんで自分でやらなきゃならない&どこまでCCocoaなのかわからんけど
10098
2019/05/20(月) 07:42:36.82ID:fPO8FQDL >>99
どうもです。
文字は、Mac版では最終的には Core Text で描かれるのですけど、自分がやらなくてはならないのは IM から
受け取った NSAttributedString を直接描くのではなく、それをその言語のテキストオブジェクトに反映させる
(それは既存の仕組みで結果的に描かれる)ということをしなくてはならないのです。
その NSAttributedString そのものを Cocoa フレームワークなり Core Text フレームワークなりに引き渡して描か
せられれば、多分アンダーラインもいつも見ている形で勝手に表現されると予想してるんですが、それが出来ないのが
辛いところで。それでアトリビュートを解析する必要があるのです。
その言語のGUIにはアンダーラインを表示する仕組みがないので、そっちは自分でOpenGLで描かねばならんのですが...
どこまで Cocoa なのかは、NSAttributedString から文字列と、そのアトリビュート情報を取り出すまで、ということ
になります。
どうもです。
文字は、Mac版では最終的には Core Text で描かれるのですけど、自分がやらなくてはならないのは IM から
受け取った NSAttributedString を直接描くのではなく、それをその言語のテキストオブジェクトに反映させる
(それは既存の仕組みで結果的に描かれる)ということをしなくてはならないのです。
その NSAttributedString そのものを Cocoa フレームワークなり Core Text フレームワークなりに引き渡して描か
せられれば、多分アンダーラインもいつも見ている形で勝手に表現されると予想してるんですが、それが出来ないのが
辛いところで。それでアトリビュートを解析する必要があるのです。
その言語のGUIにはアンダーラインを表示する仕組みがないので、そっちは自分でOpenGLで描かねばならんのですが...
どこまで Cocoa なのかは、NSAttributedString から文字列と、そのアトリビュート情報を取り出すまで、ということ
になります。
101デフォルトの名無しさん
2019/05/20(月) 09:39:20.61ID:b4QONOVW んー、よくわからんw
IMで入力中の文節を知りたいの?描画を自分でするんでなくて。「アトリビュートを解析する必要がある」「アンダーラインを表示する仕組みがない〜自分でOpenGLで描かねば」てことは
>>98の
>setMarkedText:selectedRange:〜
はそれで文節を得ようとしてもできなかったということか、単に。「切れ目のところでも同じアンダーラインが連続しているって描画」かなと思った
であれば、あとちょっとだけじゃないのかな
setMarkedText:string 〜 selectedRange:
の、string の NSMarkedClauseSegmentAttributeName の値で文節を表しているっぽいけど。それででいいんじゃないかな。他のIM(Google)だとどうなんだろ、同じような気がしないでもない、いや、同じでじゃないと困るかな
NSLog(@"%@", string); すると、
私の{
NSMarkedClauseSegment = 0;
NSUnderline = 2;
}名前は{
NSMarkedClauseSegment = 1;
NSUnderline = 1;
}中野です{
NSMarkedClauseSegment = 2;
NSUnderline = 1;
}
のように、そのまんまのようだけど
IMで入力中の文節を知りたいの?描画を自分でするんでなくて。「アトリビュートを解析する必要がある」「アンダーラインを表示する仕組みがない〜自分でOpenGLで描かねば」てことは
>>98の
>setMarkedText:selectedRange:〜
はそれで文節を得ようとしてもできなかったということか、単に。「切れ目のところでも同じアンダーラインが連続しているって描画」かなと思った
であれば、あとちょっとだけじゃないのかな
setMarkedText:string 〜 selectedRange:
の、string の NSMarkedClauseSegmentAttributeName の値で文節を表しているっぽいけど。それででいいんじゃないかな。他のIM(Google)だとどうなんだろ、同じような気がしないでもない、いや、同じでじゃないと困るかな
NSLog(@"%@", string); すると、
私の{
NSMarkedClauseSegment = 0;
NSUnderline = 2;
}名前は{
NSMarkedClauseSegment = 1;
NSUnderline = 1;
}中野です{
NSMarkedClauseSegment = 2;
NSUnderline = 1;
}
のように、そのまんまのようだけど
102デフォルトの名無しさん
2019/05/20(月) 09:41:09.96ID:b4QONOVW >切れ目のところでも同じアンダーラインが連続しているって描画」かなと思った
切れ目のところでも同じアンダーラインが連続している」って描画かなと思った
>setMarkedText:string 〜 selectedRange:
setMarkedText:string selectedRange:〜
切れ目のところでも同じアンダーラインが連続している」って描画かなと思った
>setMarkedText:string 〜 selectedRange:
setMarkedText:string selectedRange:〜
10398
2019/05/20(月) 10:04:15.41ID:+/LM9KJj >>101
>string の NSMarkedClauseSegmentAttributeName の値で文節を表しているっぽいけど。
素晴らしい情報、ありがとうございます! これで問い合わせれば行けそうな気がします。
アンダーラインのアトリビュートで表現されていると思っていたのと、他のアトリビュートを
見つけられなかったのが問題でした。帰ったら試してみます。
> IMで入力中の文節を知りたいの?描画を自分でするんでなくて。「アトリビュートを解析する
> 必要がある」「アンダーラインを表示する仕組みがない〜自分でOpenGLで描かねば」てことは
そうなんです。未確定文字列の文節を見つけたいということです。
この例で示していただいた「私の名前は中野です」の「名前は」と「中野です」が、両方共
NSUnderline = 1だからなのか、attribute:atIndex:effectiveRange: の指定アトリビュートをNSUnderlineStyleAttributeName にすると同じレンジで回答されてしまって切り出せなかった
のです。
もう少し私も賢くなりたいので、NSLog(@"%@", string); をどこに書いてこれを調べられたのか
教えていただけませんか。それがわかっていれば、お手を煩わせることもなかったはず。
>string の NSMarkedClauseSegmentAttributeName の値で文節を表しているっぽいけど。
素晴らしい情報、ありがとうございます! これで問い合わせれば行けそうな気がします。
アンダーラインのアトリビュートで表現されていると思っていたのと、他のアトリビュートを
見つけられなかったのが問題でした。帰ったら試してみます。
> IMで入力中の文節を知りたいの?描画を自分でするんでなくて。「アトリビュートを解析する
> 必要がある」「アンダーラインを表示する仕組みがない〜自分でOpenGLで描かねば」てことは
そうなんです。未確定文字列の文節を見つけたいということです。
この例で示していただいた「私の名前は中野です」の「名前は」と「中野です」が、両方共
NSUnderline = 1だからなのか、attribute:atIndex:effectiveRange: の指定アトリビュートをNSUnderlineStyleAttributeName にすると同じレンジで回答されてしまって切り出せなかった
のです。
もう少し私も賢くなりたいので、NSLog(@"%@", string); をどこに書いてこれを調べられたのか
教えていただけませんか。それがわかっていれば、お手を煩わせることもなかったはず。
104デフォルトの名無しさん
2019/05/20(月) 10:06:45.75ID:b4QONOVW アトリビュートの内容自体も知らんでいいっぽいかな。文節毎の文字数がわかればいいだろう的では、
NSMutableArray *wardLengthList = [[NSMutableArray alloc] init];
const NSUInteger length = string.length;
NSUInteger index = 0;
while( index < length ){
NSRange range;
[string attributesAtIndex:index effectiveRange:&range];
[wardLengthList addObject:@(range.length)];
index = range.location + range.length;
}
NSLog( @"%@", wardLengthList );
で、よさげ
NSMutableArray *wardLengthList = [[NSMutableArray alloc] init];
const NSUInteger length = string.length;
NSUInteger index = 0;
while( index < length ){
NSRange range;
[string attributesAtIndex:index effectiveRange:&range];
[wardLengthList addObject:@(range.length)];
index = range.location + range.length;
}
NSLog( @"%@", wardLengthList );
で、よさげ
105デフォルトの名無しさん
2019/05/20(月) 10:08:16.92ID:b4QONOVW10698
2019/05/20(月) 11:15:32.69ID:+/LM9KJj >>105
>setMarkedText:〜
>の最初
NSTextInputClient を実装した View を作って、その setMarkedText:〜の最初に書いた
ということですか? 既存の View を継承して、setMarkedText:〜だけオーバーライド
すればいいのかな。いずれにしても、ありがとうございました。
>setMarkedText:〜
>の最初
NSTextInputClient を実装した View を作って、その setMarkedText:〜の最初に書いた
ということですか? 既存の View を継承して、setMarkedText:〜だけオーバーライド
すればいいのかな。いずれにしても、ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★2 [Hitzeschleier★]
- 【芸能】デパートで見つけたランドセルが衝撃価格! つまみ枝豆「どこかで規制しないと」に共感の声殺到 「全て同感」「高すぎますね」 [冬月記者★]
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず [七波羅探題★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は [蚤の市★]
- 自ら「パンセクシュアル」だと明かし、東由貴・東京都議(立憲民主)が「パートナーシップ」施策の充実求める:東京新聞 [少考さん★]
- 【女子カーリング】五輪出場決定!女子日本代表の「フォルティウス」チーム名は「より強く」の意味 [征夷大将軍★]
- VIP過疎りすぎて9人くらいの同じメンバーがローテーションして書き込んでるだけじゃね?
- 高市を支持する日本人さんはなにが理由なの?円安進行、国債金利爆上げ、最大貿易国との摩擦とたった1ヶ月で国益を棄損してるのに [472617201]
- 1番好きなカロリーメイドがチーズのやつ
- ガイナックス破産整理終了で42年弱の歴史に幕 [256556981]
- Twitter医師ら「死ぬほど勉強して博愛精神求められるとかそらみんな美容外科なるわ。嫌なら普通の医療も保険診療廃止しろ!」 [762037879]
- オグリキャップでは抜けない
