◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

Objective-C [ObjC part:9]; ->画像>1枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1510920033/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん
2017/11/17(金) 21:00:33.77ID:oYmLZZ1y
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];
http://pc12.2ch.net/test/read.cgi/tech/1186543111/
Objective-C
http://pc11.2ch.net/test/read.cgi/tech/1106983092/
Objective-C
http://pc5.2ch.net/tech/kako/990/990574267.html
2デフォルトの名無しさん
2017/11/17(金) 21:03:20.46ID:oYmLZZ1y
*** プログラム技術板 ***
【マック】Macintoshプログラミング質問箱
http://peace.2ch.net/test/read.cgi/tech/1113058054/

*** プログラマ板 ***
【Cocoa】Macプログラマのスレ【Objective-C】
http://kanae.2ch.net/test/read.cgi/prog/1214208397/

*** 新・mac板 ***
Macでプログラミング{11}
http://anago.2ch.net/test/read.cgi/mac/1414566499/

Xcode part14
http://egg.2ch.net/test/read.cgi/mac/1476190499/

プログラミング言語Swift Part4
http://egg.2ch.net/test/read.cgi/mac/1484763495/
3デフォルトの名無しさん
2017/11/17(金) 21:09:55.63ID:oYmLZZ1y
*** 本家 ***
Objective-C プログラミング言語
https://developer.apple.com/jp/documentation/ProgrammingWithObjectiveC.pdf

Objective-C 2.0 プログラミング言語
http://read.pudn.com/downloads152/ebook/665246/ObjC.pdf

Blocksプログラミングトピックス
https://developer.apple.com/jp/documentation/Blocks.pdf

並列プログラミングガイド - GCDとか
https://developer.apple.com/jp/devcenter/ios/library/documentation/ConcurrencyProgrammingGuide.pdf

Objective-C Feature Availability Index
https://developer.apple.com/Library/mac/releasenotes/ObjectiveC/ObjCAvailabilityIndex/index.html

Objective-C Runtime Programming Guide
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Introduction/Introduction.html

そのほか英語
https://developer.apple.com/library/mac/navigation/

*** 書籍 ***
荻原本 第3版/Kindle 版も有り
http://amazon.jp/dp/4797368276

HMDTダイナミック本
http://amazon.jp/dp/4861006414
4デフォルトの名無しさん
2017/11/17(金) 21:14:12.48ID:oYmLZZ1y
Objective-C Literals ― Clang 3.6 documentation
http://clang.llvm.org/docs/ObjectiveCLiterals.html

Apple のランタイムのソースコード
http://www.opensource.apple.com/source/objc4/

ダイナミック Objective-C サイト
http://news.mynavi.jp/column/objc/

英語のサイト
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://static.stevereads.com/papers_to_read/from_c_to_objective-c.pdf
5デフォルトの名無しさん
2017/11/17(金) 21:15:12.40ID:oYmLZZ1y
Swift と関連する Obj-C ドキュメント

*** 本家 ***
Using Swift with Cocoa and Objective-C
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216

Swift and Objective-C in the Same Project
https://developer.apple.com/library/ios/documentation/swift/conceptual/buildingcocoaapps/MixandMatch.html

Adopting Modern Objective-C
https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html

Embedding Content with Swift in Objective-C
https://developer.apple.com/library/ios/qa/qa1881/_index.html
6デフォルトの名無しさん
2017/11/17(金) 21:30:22.97ID:0jV1JJrR
>>1
とりあえずw、さんきゅーっ
7デフォルトの名無しさん
2017/11/17(金) 22:13:33.72ID:00kx/Fcv
前スレ最後の方は
「ぼく電気工事士ですけど、ブレーカーとスイッチの違いってなんですかね?
いつも電気ケトルでお湯沸かすのにブレーカーオンオフしてますけど?」
みたいでトリップ感あった。
8デフォルトの名無しさん
2017/11/17(金) 22:14:19.37ID:Tpi/0V/R
メソッドに渡されるselfがclassのポインタかインスタンスのポインタかの違い
って言ってもわからんだろうな
9デフォルトの名無しさん
2017/11/17(金) 22:18:26.81ID:Q8rdVBz+
>>7
上手い例えだと思う。
10デフォルトの名無しさん
2017/11/17(金) 22:45:46.26ID:KuiGlQ+X
わかりました!
クラスメソッドはプロジェクトで1つしかインスタンスが持てない
インスタンスメソッドは複数持てる
ですね!

つまりメソッドのロジックは同じで内部変数が違うものをいくつも同時に保持したいかどうかですね!
11デフォルトの名無しさん
2017/11/17(金) 22:51:49.08ID:EkFnC7lu
一周回って合ってるおめでとう
12デフォルトの名無しさん
2017/11/17(金) 22:57:51.02ID:Tpi/0V/R
ちょっと違う
13デフォルトの名無しさん
2017/11/17(金) 22:58:24.49ID:KuiGlQ+X
ありがとうございます!
14デフォルトの名無しさん
2017/11/17(金) 22:59:02.57ID:KuiGlQ+X
あれ?(汗)
15デフォルトの名無しさん
2017/11/17(金) 23:04:16.69ID:oYmLZZ1y
逆に面白い解釈で初心者に解説する時の勉強になる可能性?
は無いか。

ここでNSObjctのインスタンスを見てみると
objc_object という構造体であり
中には Class ってのがいるだけだ
struct objc_object {
Class isa OBJC_ISA_AVAILABILITY;
};

Classってのはobjc_classと定義されているこんな感じの構造体だ
struct objc_class {
Class isa OBJC_ISA_AVAILABILITY;
Class super_class OBJC2_UNAVAILABLE;
const char *name OBJC2_UNAVAILABLE;
long version OBJC2_UNAVAILABLE;
long info OBJC2_UNAVAILABLE;
long instance_size OBJC2_UNAVAILABLE;
struct objc_ivar_list *ivars OBJC2_UNAVAILABLE;
struct objc_method_list **methodLists OBJC2_UNAVAILABLE;
struct objc_cache *cache OBJC2_UNAVAILABLE;
struct objc_protocol_list *protocols OBJC2_UNAVAILABLE;
};


そうインスタンスとはクラスを持っていてクラスはインスタンスを持っていないのだ
クラスメソッドもインスタンスメソッドもクラス構造体の中で定義されていて呼び出せる範囲が違うだけなのだ

そしてメソッドがインスタンスを持っているわけではなく
インスタンスの中のクラスの中にある物を呼び出しているのだ

これは構造はなくルールに近い話になる
16デフォルトの名無しさん
2017/11/17(金) 23:09:06.54ID:Tpi/0V/R
>>14
インスタンスメソッドも、メモリに確保される実体は一つだけ
インスタンスをいくら作ろうがメソッドの実体は一つ
selfが違うからインスタンスごとに確保されたように見えるんだろ?
インスタンスを生成するごとに新たにメモリに確保されてるのはインスタンス変数
17デフォルトの名無しさん
2017/11/17(金) 23:21:41.87ID:KuiGlQ+X
ロジックは1つで変数が複数ですね。
確かに無駄がないですね!
ここは超人レベルの方ばかりで難しいんですが、親切なので助かりました!
18デフォルトの名無しさん
2017/11/17(金) 23:25:13.48ID:wg33BRe2
そうです
19デフォルトの名無しさん
2017/11/17(金) 23:59:36.79ID:yjTQ4fwn
なぜ多くの開発者が今なお Swift よりも Objective-C を好むのか
https://frasco.io/why-many-developers-still-prefer-objective-c-to-swift-2c624232cdd2
20デフォルトの名無しさん
2017/11/18(土) 00:00:27.78ID:jHta9B9D
もう一つ聞いていいですか。

Self.hensuと_hensuって同じものですか?
とりあえず全部_hensuで書いてます。
21デフォルトの名無しさん
2017/11/18(土) 00:11:21.74ID:GufJ21C4
>>20
Self.hensuはゲッターが呼び出される
例えばこんな感じ
-(id)hensu{
 return _hensu;
}
これは
@synthesize hensu = _hensu;
としてインスタンス変数の_hensuを紐づけてると言う事
_hensuは直接_hensuを取る

取る時はそこまで問題にならないけど
セットする時は@propertyでretainを指定してる時は
@property (retain)id hensu;

Self.hensu = obj;
とするだけでセッターの中でretainしてくれるので
_hensu = obj;
とするより安全

色々自動で処理されて記述量が減った分、省略され過ぎて逆に分け分からなくなってる所は多い
22デフォルトの名無しさん
2017/11/18(土) 00:24:14.19ID:jHta9B9D
せっかく値保持したくてretainにしていても_hensuにセットしてたら効果なくて、アプリが落ちるかもってことですね!
うわー、今までたくさん書いてきちゃった
23デフォルトの名無しさん
2017/11/18(土) 00:41:51.30ID:GufJ21C4
例えばこうしたら
@interface test(){
 int _iHensu, _hensu;
}
@property (assign)int hensu;
@end
@implementation test
@synthesize hensu = _iHensu;
- (void)test{
 _hensu = 10;
 _iHensu = 90;
 NSLog(@"h1 %d", _hensu); //10
 NSLog(@"h2 %d", self.hensu);//90
}
@synthesize で hensuに_iHensuを登録すれば
self.hensuで呼び出されるのは_iHensuになる感じ
これはプリミティブ型のintだからassignだけど
オブジェクト型のインスタンスを
MRRチックに自分でretainするならセッター使わなくても問題ないよ
もちろんreleaseも必要
セッターゲッター使うとそれを省略出来るってこと

retainもセッターの中で
こんな感じの関数が呼ばれるだけだから
- (void)setHensu:(id)value{
 if(_iHensu != value){
   id oldValue = _iHensu;
   _iHensu = (value != nil ? [value retain] : nil);
   if(oldValue != nil) [oldValue release];
 }
}
24デフォルトの名無しさん
2017/11/18(土) 00:50:08.22ID:jHta9B9D
知り尽くしてますね!
コツコツ_をselfに置換する方向でいこうかと思います(泣)
25デフォルトの名無しさん
2017/11/18(土) 01:15:54.95ID:GufJ21C4
ただ処理速度の観点からいくとクリティカルな部分ではゲッターの関数呼び出しより
直接インスタンス変数を呼んだ方が良い場合もあるセッターもしかり
自分でコントロール出来るなら出来合いの関数を使わない方がスマートだったりする
あと
@property (assign)int hensu;
と登録してる場合は自動でソースにセッターも追加されてるから
関数を書かなくても
[self setHensu:10];

self.hensu = 10;
は同じなんだけど前者の書き方の方が都合がいい場合もあるから覚えとくと良い
自動入力での候補から入力した場合も数値まで行くから多少速い気もするし (これは慣れかもしれないけど

ちなみに@property setter =やgetter = で呼び出しの関数を変える事も出来るよ
こういうのを覚えておくとセッター関数をオーバーライドして同期処理を追加したりして
KVOを登録しないでKVOチックな事が出来たりする
26デフォルトの名無しさん
2017/11/18(土) 01:58:32.81ID:GufJ21C4
あ、ちなみにオブジェクト型の個別のretain とか release はMRCでの話で
ARCだとまた少し話が変わってくるわけだけどもね
そんなに気にしなくても美味い事やってくれますよ彼女なら
27デフォルトの名無しさん
2017/11/18(土) 03:58:01.57ID:jHta9B9D
objective-cってなんかすごく深いですね
28ビル・ジョブス
2017/11/18(土) 08:36:45.51ID:22t4JudU
X MRC
O MRR - Manual Retain Release
29デフォルトの名無しさん
2017/11/18(土) 09:39:22.21ID:GufJ21C4
>>28
>>23
30デフォルトの名無しさん
2017/11/18(土) 09:52:05.60ID:y+yjhIU6
こんな感じに理解してたんですけど合ってます?

-initWithString
インスタンスメソッド。allocしないと使えない。あとでreleaseが必要。

+stringWithString
クラスメソッド。allocしなくていい。
autoreleasepoolに登録された状態のインスタンスが返るので、
releaseしなくていい。

ARCだと、「releaseしなくていい」という
コンビニエンス・コンストラクタのメリットが薄れた。
(気軽にallocしちゃってもメモリリークしない)
31デフォルトの名無しさん
2017/11/18(土) 10:19:53.99ID:QpBxoTJw
>>30
今時Obj-CでMRRを使う場面は無いと思うが、参照カウント方式は基本なので教えると

Obj *obj = [[Obj alloc] init];

“init”から始まる、名前がlower camel caseのインスタンスメソッドは、retain済みのオブジェクトのポインタを返す
これを「initファミリー」と言い、この命名規則を守れば自作メソッドでも自動的にretain済みを返す
変数objはただのポインタで、-initから返る上記のポインタ値を代入してるだけ
retain済みなので使いおわったら-releaseを呼んで解放する

AppleのAPIの、いわゆるコンビニエンスコンストラクタはautorelease済みのオブジェクトを返すので、releaseしてはならない
その場合main()のautoreleasepoolに登録されるので解放されるのはアプリ終了時になる
解放のタイミングを自分で制御したい場合はinitファミリーを使うかautoreleasepoolで囲うかする必要がある
32デフォルトの名無しさん
2017/11/18(土) 10:34:38.89ID:QpBxoTJw
{ initファミリー/retain } と { release } は対で使うこと

View *view_ = [[View alloc] initWithFrame:CGRectMake(0,0,100,100)];
[self.view addSubview:view_];
[view_ release]; //上記initWithFrameと対

これはself.viewがview_をretainして保持するので、以降直接参照しないのならここでreleaseしても良い
self.viewはselfが解放されるときに解放され、その時にview_にもreleaseが呼ばれる //self.view側で呼んだretainと対
33デフォルトの名無しさん
2017/11/18(土) 10:38:27.21ID:QpBxoTJw
対で使うのが大原則なので、例えば

@property (retain) id obj;

というプロパティを持ったクラスなら必ずそれをdeallocでreleaseすること

- (void)dealloc
{
 [_obj release];
 [super dealloc];
}
34デフォルトの名無しさん
2017/11/18(土) 10:41:50.62ID:QpBxoTJw
こんなことを全自動でやるのがARCなので、普通はARC使うけどね
でARCとは、ビルド時にretain/releaseの行を、strong/weakに応じて挿入するだけで実現できているのだ
シンプルだね
35デフォルトの名無しさん
2017/11/18(土) 11:34:23.42ID:y+yjhIU6
>>31-34
詳しい説明ありがとうございます!

自作メソッドでも、initから始めると自動的にretainされるのは
知らなかったです。

あと、main()のautoreleasepoolが解放されるのは
アプリ終了時、というのも分かってなかった…。

ARCがない時は、メモリリークが怖くて、
コンビニエンス・コンストラクタばっかり使ってましたけど、
あんまり意味がなかったのかも…。

今はARCのおかげで、何も考えずにallocとかnewできて
楽になりました。
36デフォルトの名無しさん
2017/11/19(日) 11:30:09.61ID:RC6H/PLj
>>1
遅くなったけどスレ立てありがと
37デフォルトの名無しさん
2017/11/22(水) 03:50:42.17ID:xPTGudok
複数のhファイルで同じ#import~をたくさんかくと何かデメリットがあるのでしょうか?
わかりやすくmで使っているものをそれぞれ全部書くべきか、書かなくてもビルドが通るなら書かない方がいいのかベストは何でしょうか。
38デフォルトの名無しさん
2017/11/22(水) 10:19:35.09ID:r2ZqOIfG
>>37
#include
使ってた人は
重複定義とか循環参照とかでビルドエラーになった経験があるからね
#import
でも#include時と同じように気を付けるってだけ
実際#importは多重インクルードしない機能があるから問題ないけど
ソースが汚れるし参照でエラーが出る事あるしで無闇にimportしない
必要な物だけimportして
親子関係をしっかり考えたコーディングを心がけましょうってこと
39デフォルトの名無しさん
2017/11/22(水) 15:51:24.96ID:xPTGudok
なるべく必要最小限にということですね。
40デフォルトの名無しさん
AViewcontrollerを開いたあとに、BViewcontrollerを開くと、Aでimport たファイルはBでしなくてもビルドが通るので書かない方がいいのかなとモヤモヤしてました
41デフォルトの名無しさん
2017/11/22(水) 19:21:42.58ID:X4A9CpkS
ヘッダで必要ならヘッダでimport、ソースで必要ならソースでimport
42デフォルトの名無しさん
2017/11/23(木) 00:42:23.09ID:OCoBz1Jl
ヘッダにはimportせず
@class
の登場も多い
43デフォルトの名無しさん
2017/11/25(土) 10:14:21.83ID:QEaE88pM
すれ違いだったらすみません。
dudReciveMemoryWarningの活用方法って何かありますでしょうか?
44デフォルトの名無しさん
2017/11/25(土) 10:47:26.89ID:HXFBSnjY
今必要でなくて再取得/再計算できるものは解放するんや
せやないとクラッシュする
45デフォルトの名無しさん
2017/11/25(土) 10:57:22.27ID:QEaE88pM
するarcの場合は自動なのでやることはないとうことですか?
または配列にnilを入れたりすることも効果ありますか?
46デフォルトの名無しさん
2017/11/25(土) 14:12:30.26ID:xzKXUh+9
strong変数にnilを代入してメモリを解放
NSArrayは要素をstrongで保持するのでNSArrayごとnilにすれば解放される
ただでかいメモリ食うのは主にビューなんで、表示してない不要なビューは解放するのが効く
つうか、ビューは必要な分を動的に生成が基本だろ
そもそもそのメッセージ飛んできたらユーザーに再起動を促すね俺は
47デフォルトの名無しさん
2017/11/26(日) 03:28:42.31ID:9JZfehuk
>>46
Viewを動的作成しておいて解放は効果ありそうですね。
Tabだったら他のViewcontrollerを解放することは可能でしょうか?
確かにこまごま対処するより再起動なら間違いないですね
48デフォルトの名無しさん
2018/01/08(月) 17:55:53.60ID:PDDlr6cN
返り値複数の関数は作れますか?
49デフォルトの名無しさん
2018/01/08(月) 19:39:48.53ID:g3wGVkXu
構造体とかobject(メンバ)を返す
50デフォルトの名無しさん
2018/01/10(水) 20:03:11.34ID:BUMGzXZx
cocoa event handling 難しいです。

Windowに置いたAVPlayerViewのjkl キーナビゲーションをカスタマイズ=潰したいです。
別のViewを配置して、NSResponderのkeyEquivalent系メソッドでキーコードのjklなNSEventをぶんどれば良いのでしょうか。

AVPlayerViewは、acceptFirstResponderにYesと返してくるのに、Viewをクリックしてもfirstresponderにならないので悩んでます。
51デフォルトの名無しさん
2018/01/10(水) 22:15:32.63ID:oP8dWPVt
AVPlayerViewのサブクラスを作って、その(キー)イベントハンドラでやればいいんじゃないの。てかそれが普通で簡単確実じゃないかなあ。もしくはMethod Swizzlingでとか
NSResponder云々はResponder chainを理解してなさげ。奪うとかよりも取りこぼしを拾うような感じで、やりたいような処理機会を奪うのはムズいだろう
52デフォルトの名無しさん
2018/01/13(土) 21:00:50.73ID:r2JNGeyO
もう少し教えて下さい。
event handling guideを読み進めたのですが、keyboard eventの場合には、最初にperformkeyequivalent
がWindow上の全viewに対して一通り呼ばれて、
その後にmenu barのショートカットが評価され、
それでも該当しない場合に初めて
keyDown:をresponder chainへ投げる流れに進む、
と理解したのですが、正しいでしょうか。

この理解ですと、acceptFirstResponder/responder chainが意味を持つのはキーイベント処理のかなり後になるように思えます。
viewが実装しているキーボード処理をoverrideする場合
親クラスがkeydownのみ実装していると仮定するのは
微妙かなと感じたのですが、AppKitではkeyequivalentでは実装しない、そういう前提で書くのが正しいのでしょうか。
53デフォルトの名無しさん
2018/01/13(土) 21:39:21.90ID:CuNC/zNj
読んだだけだろ?テストしたらわかるよperformKeyEquivalent:の意味が
54デフォルトの名無しさん
2018/02/16(金) 06:10:45.34ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
55デフォルトの名無しさん
2018/02/16(金) 11:15:20.63ID:619F/gvV
こういう宣伝活動はエセ右翼
56デフォルトの名無しさん
2018/02/25(日) 12:03:36.95ID:v4cEluZE
performSelecterで複数の引数を指定するにはどうすればよいですか?
57デフォルトの名無しさん
2018/02/25(日) 14:39:30.86ID:JPXzVKnW
performSelector:withObject:withObject:
58デフォルトの名無しさん
2018/02/25(日) 17:21:55.57ID:v4cEluZE
ありがとうございます
3つからは配列しかないでしょうか
59デフォルトの名無しさん
2018/02/25(日) 19:59:03.61ID:bmk994+o
辞書にキー値で入れて渡せばいくらでも
60デフォルトの名無しさん
2018/02/25(日) 23:04:26.61ID:EklcbxjR
ドキュメントのニュアンス的に書いてあるようにperformSelector:は簡易版のようなもので、本来NSInvocationを使うのが筋だと思ってる
まあ、NSInvocationはめんどくさいから普通に>>59のいうやり方にするけど
NSInvocation使ってperformSelector:のオレオレバージョンメソッド追加したりも簡単だけど、それもあんましないな
61デフォルトの名無しさん
2018/02/26(月) 01:16:10.13ID:tsC3awB5
他で既にたくさん呼ばれている関数の引数が3つ以上だと使えないですね。
Timerで代替できるけど、ちょっと流れが読みにくくなっちゃうんですよね
62デフォルトの名無しさん
2018/02/26(月) 01:19:45.75ID:tsC3awB5
progressviewを読んでも表示されないときに、処理を一旦をOSに返し?表示させるために使ってますが、他の良い方法はありますか?
63デフォルトの名無しさん
2018/02/26(月) 01:59:59.33ID:4buxL9WA
流れが読めないなw
64デフォルトの名無しさん
2018/02/26(月) 03:20:00.69ID:4buxL9WA
performSelector:withObject:withObject:... の、ただ引数が増えましたバージョンはNSInvocation使って普通にできたな

Timer~処理を一旦をOSに~がafterDelay:付きのような気ががするが、そもそもそれは複数引数なんてないしな
afterDelay:付きはcancelPreviousPerformRequestsWithTarget:selector:object:をどう実現すんのかわからんが、それいらんのだったら同じくでできる
65デフォルトの名無しさん
2018/02/26(月) 03:31:09.46ID:MMVJYAud
単に次のrunloop cycleで処理を実行させたいということのような気がするんで
-[NSOpeartionQueue addOperationWithBlock:] でいいんじゃないかな (あれば、だけど)
66デフォルトの名無しさん
2018/02/26(月) 09:56:36.23ID:tsC3awB5
キャンセルというのがあるんですね!
初めて知りました。

addOperation試してみます。
勉強になりました。

ありがとうございます。
67デフォルトの名無しさん
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で受信したら受信結果をファイルに書き出すのが目的です

ご助言お願いします
68デフォルトの名無しさん
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の配列
なんかは問題なく参照出来ています。クラスインスタンスだけだめなんでしょうか。

解決方法についてご助言頂けますと幸いです
70デフォルトの名無しさん
2018/03/26(月) 00:32:44.01ID:epnL0PWD
Callbackにデリゲートも持たせる
iokitのUSB関連のコールバックは基本そういう設計になってる
71デフォルトの名無しさん
2018/03/26(月) 11:00:28.93ID:nKFwl68E
情報量が足りないから推測するしかないけど、メモリ管理がきちんとできてなくて public な変数とやらがdangling pointer になっているような気がする
72デフォルトの名無しさん
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になります
73デフォルトの名無しさん
2018/03/27(火) 00:01:46.90ID:qoAxdzUq
これ単にコールバック関数まで来たときには既に NSURL *url が消えてなくなってるんと
ちゃうの?
74デフォルトの名無しさん
2018/03/27(火) 00:28:21.89ID:6VXiCpbu
hoo のインスタンスをどうやって receiveUSBDataCallback に渡してるの?
75デフォルトの名無しさん
2018/03/27(火) 01:23:52.61ID:xcLBevCX
@interface hoo ...
@end
の中に入れてることから、そこに入れても hoo と全く無関係な単なる Cの関数 だとは思ってなさげ
76デフォルトの名無しさん
2018/03/28(水) 23:12:49.99ID:GcQCgl46
hooで自信のインスタンスを返すクラスメソッド作っておけば良い
そこからhooを取得してurlを渡すゲッターメソッドも作っておけば良い
それだけの話でしょ
77デフォルトの名無しさん
2018/03/28(水) 23:52:03.04ID:HBbH3CfN
Callbackにユーザ定義ポインタ(void *)あるんじゃないの
何使ってるのか知らんけど、USBなんちゃらRecieveなんちゃらだったかは、Callback登録するときに一緒に渡して、Callback呼ばれる時にはそれが引数と渡ってくるようになってたようだけど
であれば、それでurlだのfooだの渡すだけじゃね
78デフォルトの名無しさん
2018/03/28(水) 23:58:50.40ID:HBbH3CfN
ああ、EXC_BAD_SCCESSなら、それやってて意図せず(ARCをよくわかってないと)に、元のインスタンスがCallback呼ばれる時にはすでにdeallocされてるとかありそう
79デフォルトの名無しさん
2018/03/28(水) 23:59:11.49ID:GcQCgl46
基本的なiokitの設計ならコールバックはそうなってるけど
libusbとかでやってるなら話は変わってきそう
80デフォルトの名無しさん
2018/04/01(日) 14:42:04.87ID:T4ssCAAm
皆さんはキーボードはUS使ってる?
私は場所によってUSだったりJISだったりするんだけど
objcの場合@や{}[]使う事が多いからjisの方が書き易い気がしてきた
どうなんだろ
81デフォルトの名無しさん
2018/04/02(月) 04:11:07.55ID:3ewhMOuh
USになれたらUSが合理的
82デフォルトの名無しさん
2018/04/02(月) 04:27:54.19ID:ZyMoq4+j
>{}[]使う事が多いからjisの方が書き易い
これがイミフでそういう話には進まないな
83デフォルトの名無しさん
2018/04/02(月) 12:17:51.99ID:Qs9eq6u+
USキーボードってかな入力できるの?
ローマ字変換のみ?
84デフォルトの名無しさん
2018/04/02(月) 14:03:58.45ID:Iiz9jeIK
>>82
俺は意味分かった。
85デフォルトの名無しさん
2018/04/02(月) 19:37:02.92ID:g3r8EJqq
>>83
できるけどキーの数足りてないので何らかの割り当ては必要
86デフォルトの名無しさん
2018/04/02(月) 20:04:40.50ID:se2Xdp9V
両方つかったけど
あまりかわらない
慣れかな
インテリジェンスだし
そんな連続でキーパンチ続けないし
87デフォルトの名無しさん
2018/04/06(金) 17:07:16.72ID:lWZnsSZL
bitFlyerがObjective-C共同開発者Tom Love氏を顧問に、ブロックチェーン向け言語開発に取り組む
https://jp.techcrunch.com/2018/04/06/tomlove-joins-bitflyer/
88デフォルトの名無しさん
2018/05/12(土) 11:01:20.39ID:pDgCeBjY
共同ツール 1
https://seleck.cc/685

https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
http://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/
http://photoshopvip.net/103903

https://goodpatch.com/blog/sketch-plugins/
89デフォルトの名無しさん
2018/05/23(水) 19:57:46.03ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

4NUVT
90デフォルトの名無しさん
2018/07/05(木) 01:41:32.11ID:RfoszcD2
5S1
91デフォルトの名無しさん
2019/03/09(土) 10:31:39.70ID:Oh2tQqB7
今のObjective-C本はMacOSXでアプリ開発する前提の本ばかりで読みづらい
GNUstep上で環境作れば少しはマシになる
92デフォルトの名無しさん
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の仕様?
93デフォルトの名無しさん
2019/04/16(火) 20:29:54.10ID:OvEJzEbO
本が古い、その対象のXcodeが古い。たぶん、Xcode 10よりもずーっと前に変わったとこかな
無名カテゴリ
@interface AppDelegate ()
@end
ってのが、4.5 の後のどこかで使えるよになって、パブリックでないものは、.m に書く書けるようになったので、.h ではなく .m になったのだよ
94デフォルトの名無しさん
2019/04/17(水) 04:19:02.53ID:eleXOijC
Xcode 4.5ってよくそんな古い本探してきたな。
95デフォルトの名無しさん
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の部分くらい書き換えてもよさそうだが。執筆者もそのくらい勝手にやるのを認めるだろう。東京電機大学と銘打っているなら
96デフォルトの名無しさん
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年) 電機学校出版局の雑誌部が独立し、オーム社となる。
オーム社関連なのか。がっかりだよ。古き良き(よくない)日本の技術出版社(が出す日本語版)らしいけど
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を勉強する良い参考書/サイトなんかあれば教えてください
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 の
アトリビュートの指定で実現可能なのでしょうか。
またそれが出来るとして(←出来るのだろうと思いますが)、その切れ目の場所を知ることは出来ますか。
99デフォルトの名無しさん
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なのかわからんけど
10098
2019/05/20(月) 07:42:36.82ID:fPO8FQDL
>>99
どうもです。
文字は、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;
}
のように、そのまんまのようだけど
102デフォルトの名無しさん
2019/05/20(月) 09:41:09.96ID:b4QONOVW
>切れ目のところでも同じアンダーラインが連続しているって描画」かなと思った
切れ目のところでも同じアンダーラインが連続している」って描画かなと思った

>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); をどこに書いてこれを調べられたのか
教えていただけませんか。それがわかっていれば、お手を煩わせることもなかったはず。
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 );
で、よさげ
105デフォルトの名無しさん
2019/05/20(月) 10:08:16.92ID:b4QONOVW
>>103
>NSLog(@"%@", string); をどこに書いてこれを調べられたのか
setMarkedText:~
の最初
10698
2019/05/20(月) 11:15:32.69ID:+/LM9KJj
>>105
>setMarkedText:~
>の最初

NSTextInputClient を実装した View を作って、その setMarkedText:~の最初に書いた
ということですか? 既存の View を継承して、setMarkedText:~だけオーバーライド
すればいいのかな。いずれにしても、ありがとうございました。

ニューススポーツなんでも実況



lud20250401111356
このスレへの固定リンク: http://5chb.net/r/tech/1510920033/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「Objective-C [ObjC part:9]; ->画像>1枚 」を見た人も見ています:
【PS4】初音ミク Project DIVA Future Tone Part5
【SEGA】Project DIVA Arcade part254【初音ミク】
一人で行くHello! Project 20th Anniversary!! Hello! Project 2018 SUMMER ~ALL FOR ONE~ & ~ONE FOR ALL~ Part30
一人で行くHello! Project 20th Anniversary!! Hello! Project 2019 WINTER~YOU & I~NEW AGE~part⑥
一人で行くHello! Project 20th Anniversary!! Hello! Project 2019 WINTER~YOU & I~NEW AGE~part①
一人で行くHello! Project 20th Anniversary!! Hello! Project 2018 SUMMER ~ALL FOR ONE~ & ~ONE FOR ALL~ Part31
【Steam】初音ミク Project DIVA MEGA39’s+ Part1【集大成】
一人で行くHello! Project 25th ANNIVERSARY CONCERT【国立代々木競技場・第一体育館 9月9日・10日】Part6
一人で行くHello! Project 25th ANNIVERSARY CONCERT【国立代々木競技場・第一体育館 9月9日・10日】Part8
一人で行くHello! Project 25th ANNIVERSARY CONCERT【国立代々木競技場・第一体育館 9月9日・10日】Part4
一人で行く『Hello! Project 25th ANNIVERSARY CONCERT』【国立代々木競技場第一体育館 9月9日(土)&10日(日)】PART3
【Library of Ruina】Project Moon 総合 Part42【Lobotomy】
【Library of Ruina】Project Moon 総合 Part73【Lobotomy】
【Library of Ruina】Project Moon 総合 Part70【Lobotomy】
【Library of Ruina】Project Moon 総合 Part100【Lobotomy】
【Library of Ruina】Project Moon 総合 Part25【Lobotomy Corp】
【Library of Ruina】Project Moon 総合 Part23【Lobotomy Corp】
【Library of Ruina】Project Moon 総合 Part17【Lobotomy Corp】
【HONDA】シビックタイプR/CIVIC TYPE-R FK8 Part2
【HONDA】シビックタイプR/CIVIC TYPE-R FK8 Part24
【HONDA】シビックタイプR/CIVIC TYPE-R FK8 Part22
【HONDA】シビックタイプR/CIVIC TYPE-R FK8 Part18
神姫PROJECT A Part.2
■ ハロプロ ■ フジテレビTWO『『Hello! Project Year-EndParty2020~GOOD BYE&HELLO !~(第三部)』独占生中継』 ■ 19:00~21:30 ■④
Garmin Vivoactive 総合スレ Part.2
【クソ運営】B-project part4 
【式姫Project】ひねもす式姫 Part14
【式姫Project】ひねもす式姫 Part9
【式姫Project】ひねもす式姫 Part8
【式姫Project】ひねもす式姫 Part33
【式姫Project】ひねもす式姫 Part38
【式姫Project】ひねもす式姫 Part40
【式姫Project】ひねもす式姫 Part23
【式姫Project】ひねもす式姫 Part41
【絶望の】Shibu3 project part.2【OTR】
【式姫Project】かくりよの門 -朧- Part6
【PS4/XBOXONE/PC】Project CARS Part23
【式姫Project】うつしよの帳Part15【開始】
【テクロス】神姫PROJECT追悼スレ 2020 Part8
【テクロス】神姫PROJECT追悼スレ 2021 Part16
【アクロス】アレックス part3【A PROJECT第9弾】
【アクロス】アレックス part11【A PROJECT第9弾】
【PBW】Pandora Party Project ウォッチスレ7【PPP】
【Bプロ】愚痴雑談スレ B-PROJECT Part.11【無敵デンジャラス】
【式姫Project】かくりよの門 -朧- Part1【2019年秋配信予定】
【brawl+,-】スマブラX 改造 Part.24【Project M】 &#169;2ch.net
【バーチャルYoutuber】元ぱりぷろ・ちゅこらら アンチスレ Part.23【Paryi Project】
【バーチャルYoutuber】ぱりぷろ・Paryi Project アンチスレ Part.6【前世は全員生主&キャス主??】
【バーチャルYoutuber】ぱりぷろ・Paryi Project アンチスレ Part.7【前世は全員生主&キャス主??】
【バーチャルYoutuber】ぱりぷろ・Paryi Project アンチスレ Part.16【前世は全員生主&キャス主??】
【バーチャルYoutuber】ぱりぷろ・Paryi Project アンチスレ Part.19【前世は全員生主&キャス主??】
一人で行くHello! Project 2017 SUMMER ~HELLO! MEETING~&~HELLO! GATHERING~ Part10
■ 初回放送 ■ BSスカパー「Hello! Project COUNTDOWN PARTY 2017~GOOD BYE & HELLO!~」 ■ 18:00~ ■②
【HONDA】シビックタイプR/CIVIC TYPE-R FK8 Part1
【HONDA】シビックタイプR/CIVIC TYPE-R FL5 Part3
【HONDA】シビックタイプR/CIVIC TYPE-R FK8 Part30
【HONDA】シビックタイプR/CIVIC TYPE-R FL5 Part16
【HONDA】シビックタイプR/CIVIC TYPE-R FK8 Part45
【HONDA】シビックタイプR/CIVIC TYPE-R FL5 Part15
【HONDA】シビックタイプR/CIVIC TYPE-R FK8 Part46
【HONDA】シビックタイプR/CIVIC TYPE-R FL5 Part54
【HONDA】シビックタイプR/CIVIC TYPE-R FK8 Part51
【HONDA】シビックタイプR/CIVIC TYPE-R FL5 Part56
【HONDA】シビックタイプR/CIVIC TYPE-R FL5 Part54
【HONDA】シビックタイプR/CIVIC TYPE-R FK8 Part43
【HONDA】シビックタイプR/CIVIC TYPE-R FL5 Part33
13:53:40 up 51 days, 14:52, 0 users, load average: 8.12, 7.85, 7.94

in 1.6971039772034 sec @1.6971039772034@0b7 on 060802