Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
(Wikipedia:http://ja.wikipedia.org/wiki/Objective-C より)
前スレ
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:8.1]; [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2014/11/01(土) 13:35:17.70ID:12FSUUrY
426デフォルトの名無しさん
2016/03/05(土) 08:30:43.19ID:xdiHToCv (おれ、1990年代頭にK&RでC学んだから、ずっとポインタは整数型だと思ってて
いつのまにかポインタ型ってのになってるの2010年ごろまで知らんかったでw)
いつのまにかポインタ型ってのになってるの2010年ごろまで知らんかったでw)
427デフォルトの名無しさん
2016/03/05(土) 09:33:32.85ID:C6PXQEiT Objective-Cはここ数年で劇的に変わったからな。
といかお前ら絶対Objective-C 2.0とか知らないだろ。
2010年:Objective-C 最速基礎文法マスター
http://d.hatena.ne.jp/fn7/20100203/1265207098
2015年:Objective-C 2.0 基礎文法最速マスター
http://marycore.jp/prog/objective-c/basic-syntax/
といかお前ら絶対Objective-C 2.0とか知らないだろ。
2010年:Objective-C 最速基礎文法マスター
http://d.hatena.ne.jp/fn7/20100203/1265207098
2015年:Objective-C 2.0 基礎文法最速マスター
http://marycore.jp/prog/objective-c/basic-syntax/
428デフォルトの名無しさん
2016/03/05(土) 09:40:03.49ID:y3HtH6T+ Obj-C 2.0 なんて 9 年前の言葉持ち出してきてどうした
429デフォルトの名無しさん
2016/03/05(土) 09:57:04.10ID:C6PXQEiT たしかにObjective-C 2.0以前にXcode側の対応が充実したって言ったほうがいいかもな。
あとマイナーアップデートもちょくちょくあった気がする。
@implementation側でインスタンス変数宣言出来るようになったし
ジェネリックスも最近入ってきた。
あとマイナーアップデートもちょくちょくあった気がする。
@implementation側でインスタンス変数宣言出来るようになったし
ジェネリックスも最近入ってきた。
430デフォルトの名無しさん
2016/03/05(土) 10:02:21.11ID:xdiHToCv >>427
上でも出てるが詳解Objective-C2.0(萩原本)は2008年やで。
俺もcocoaやろうと買ってて、それを2009年のiPhone開発解禁で
本格的に読み始めたから、基本的にiOSやってるやつはみんな2.0からやで。
上でも出てるが詳解Objective-C2.0(萩原本)は2008年やで。
俺もcocoaやろうと買ってて、それを2009年のiPhone開発解禁で
本格的に読み始めたから、基本的にiOSやってるやつはみんな2.0からやで。
431デフォルトの名無しさん
2016/03/05(土) 11:55:02.65ID:UYtB00OI Objective-Cじゃダメな理由って何なのそれ?
432デフォルトの名無しさん
2016/03/05(土) 12:29:52.33ID:jb1F0oyu >>416
あと2.0?になってからpublicとかprivateキーワードも使わなくなったよね。
ヘッダファイル記載したプロパティはpublic
.m側にカテゴリとして記載したプロパティがprivateみたいな方針が標準になった
syhthsizeとかも直接使わなくなってプロバティを宣言すると裏で勝手に
_変数 がつくられてsetterとgetterが自動生成されるとか
暗黙的なことがごちゃごちゃ増えたね。
後から入った人にはマジカルすぎるかもしれない
あと2.0?になってからpublicとかprivateキーワードも使わなくなったよね。
ヘッダファイル記載したプロパティはpublic
.m側にカテゴリとして記載したプロパティがprivateみたいな方針が標準になった
syhthsizeとかも直接使わなくなってプロバティを宣言すると裏で勝手に
_変数 がつくられてsetterとgetterが自動生成されるとか
暗黙的なことがごちゃごちゃ増えたね。
後から入った人にはマジカルすぎるかもしれない
433デフォルトの名無しさん
2016/03/05(土) 13:18:46.27ID:Y+yze1Qk 少しずつ読み進めてますが、Objective-Cらしくない感じがしちゃうけど@propertyは便利ですね
ただ、
@public
@private
@protected
はわかりやすかった気がするけど、ヘッダファイルにprivateメンバの情報を
載せないで済むようにしたかったってことなのかな
ただ、
@public
@private
@protected
はわかりやすかった気がするけど、ヘッダファイルにprivateメンバの情報を
載せないで済むようにしたかったってことなのかな
434デフォルトの名無しさん
2016/03/05(土) 14:18:12.35ID:mFk1f1pP ヘッダに書くのはパブリックメソッドのみ。これが合理的で非常にわかりやすい。
もっともOOPに適した言語だと思う。
もっともOOPに適した言語だと思う。
435デフォルトの名無しさん
2016/03/05(土) 14:35:34.86ID:HF+l0CAH ここはいつから日記帳になったんだ
436デフォルトの名無しさん
2016/03/05(土) 18:16:16.08ID:jb1F0oyu437デフォルトの名無しさん
2016/03/06(日) 00:41:20.28ID:5qJ91+Ie >>427
NeXTのOpticalDrive版もってましたがなにか?
NeXTのOpticalDrive版もってましたがなにか?
438デフォルトの名無しさん
2016/03/06(日) 11:35:02.88ID:g15wMUfE439デフォルトの名無しさん
2016/03/10(木) 14:37:18.03ID:OLUNjZSr うちは未だに[NSArray arrayWithObjects:@"", nil]とか[NSNumber initWithInteger:0]使ってるコードあるけどな。
テストが面倒なのでTo Modern Objective-C Syntax...機能は使わないという方針なんだよ。
ウォーターフォール型でモバイルアプリ開発始めるとこうなる。
テストが面倒なのでTo Modern Objective-C Syntax...機能は使わないという方針なんだよ。
ウォーターフォール型でモバイルアプリ開発始めるとこうなる。
440デフォルトの名無しさん
2016/03/10(木) 17:40:00.03ID:yfQIYaI+ なんでテストが面倒なの?
441デフォルトの名無しさん
2016/03/11(金) 16:33:44.79ID:kWA4jyXp 日本のウォーターフォール開発にはエビデンスというものがあってだな。
とりあえず責任のなすりつけあいをするために大掛かりな改修が入ると1からテストし直す所は多いよ
とりあえず責任のなすりつけあいをするために大掛かりな改修が入ると1からテストし直す所は多いよ
442デフォルトの名無しさん
2016/03/17(木) 01:04:45.68ID:7hhawqio > To Modern Objective-C Syntax...機能
ああXcodeの一括置換機能か
意味がわかった
ああXcodeの一括置換機能か
意味がわかった
443デフォルトの名無しさん
2016/04/06(水) 03:45:31.16ID:HJm2wRVw NSMatrixでハマってしまいました、お知恵をお貸しください。
NSMatrixで複数選択した時の選択されている箇所を調べる方法なんですが
NSMatrixのアクションを以下のようにしてみたのですがオン時はうまく行きますがオフ時にNSCellのstateが変わらずオンの値のままになってしまいます。
オフにしてから他のcellの値を変えると適用された値になります。
原因分かりますか?
- (IBAction)choiceMatrix:(NSMatrix *)sender {
BOOL c1, c2, c3, c4;
for (NSCell *cell in [sender cells]) {
switch ([cell tag]) {
case 0:
c1=[cell state];
break;
case 1:
c2=[cell state];
break;
〜〜〜〜〜〜〜〜
default:
break;
}
}
NSLog(@"[%d, %d, %d, %d]",c1, c2, c3, c4);
}
NSMatrixで複数選択した時の選択されている箇所を調べる方法なんですが
NSMatrixのアクションを以下のようにしてみたのですがオン時はうまく行きますがオフ時にNSCellのstateが変わらずオンの値のままになってしまいます。
オフにしてから他のcellの値を変えると適用された値になります。
原因分かりますか?
- (IBAction)choiceMatrix:(NSMatrix *)sender {
BOOL c1, c2, c3, c4;
for (NSCell *cell in [sender cells]) {
switch ([cell tag]) {
case 0:
c1=[cell state];
break;
case 1:
c2=[cell state];
break;
〜〜〜〜〜〜〜〜
default:
break;
}
}
NSLog(@"[%d, %d, %d, %d]",c1, c2, c3, c4);
}
444デフォルトの名無しさん
2016/05/01(日) 14:30:22.53ID:tKi6j9CT 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
う
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
う
445デフォルトの名無しさん
2016/05/21(土) 21:08:51.89ID:oKW2aYRF iosって標準で何かデータベース使えるの?
androidはsqliteが使えるけど
androidはsqliteが使えるけど
446デフォルトの名無しさん
2016/05/21(土) 22:23:35.91ID:CpbYB6Dd sqlite入ってますよ
447デフォルトの名無しさん
2016/05/22(日) 01:54:16.39ID:gQDMaR5e ありがとうございます!
448デフォルトの名無しさん
2016/05/23(月) 11:26:40.41ID:VJZJx6HE 安心してください
2016/07/10(日) 10:00:08.73ID:mg7VERF+
オーバーライドの意味がわかりません
スーパークラス
メソッドA
サブクラス
メソッドA
サブクラスのメソッドAをオーバーライドします
スーパースラスは、どうやって使うの?
スーパークラス
メソッドA
サブクラス
メソッドA
サブクラスのメソッドAをオーバーライドします
スーパースラスは、どうやって使うの?
2016/07/10(日) 11:33:19.16ID:BZS6mtB9
[super メソッドA];
451デフォルトの名無しさん
2016/08/08(月) 14:05:28.43ID:hWjiE75J __strong
__weak
__unsafe_unretained
__autoreleasing
Obj-C2.0で、これ使いますか?
__weak
__unsafe_unretained
__autoreleasing
Obj-C2.0で、これ使いますか?
452デフォルトの名無しさん
2016/08/09(火) 02:55:35.50ID:MqKY0R2e 使う事もあるよ
453デフォルトの名無しさん
2016/08/10(水) 14:13:19.69ID:5T/jHI7m カテゴリって、戻り値しかない関数って思えばいいの?
454デフォルトの名無しさん
2016/08/10(水) 17:39:43.18ID:62x+4tTI 凄い。全然違う。いわゆる trait
455デフォルトの名無しさん
2016/09/16(金) 11:26:49.35ID:L/lkPp6y 継承って、C言語の標準関数って思っていいの?
456デフォルトの名無しさん
2016/09/16(金) 11:32:41.83ID:uFIaMsTW すまん言いたいことの意味がわからない
457デフォルトの名無しさん
2016/09/16(金) 11:59:46.56ID:Uoij9LZq クラスの場合はサブクラス化のこと。多重継承はできない。
プロトコルの場合は多重継承できる。
プロトコルの場合は多重継承できる。
458デフォルトの名無しさん
2016/09/18(日) 16:19:24.88ID:9KaldL8I459デフォルトの名無しさん
2016/09/18(日) 16:21:49.97ID:V608H0Yq つまんね
460デフォルトの名無しさん
2016/09/18(日) 16:22:34.65ID:+iC0HZAY おつおつ
461デフォルトの名無しさん
2016/09/19(月) 06:53:12.40ID:ze/R6ozd >>438とか言ってるからどれ程に有識かと思ったら
バズワードでしかObjCの機能を説明できない奴らばかりかよ、、、
バズワードでしかObjCの機能を説明できない奴らばかりかよ、、、
462デフォルトの名無しさん
2016/09/19(月) 08:04:00.68ID:W9V/RaHi まじでカテゴリとは何かってことか?
既存のクラスに宣言(.h)と実装(.m)を追加するObj-Cのミラクル機能だよ。
例えばNSArrayにobjectAtIndexSafety:を追加する。
oreore.h
@interface NSArray (oreore)
- (id) objectAtIndexSafety:(NSUInteger)index;
@end
oreore.m
@implementation NSArray(oreore)
- (id) objectAtIndexSafety:(NSUInteger)index
{
if (index < [self count]) {
return [self objectAtIndex:index];
}
return nil;
}
@end
既存のクラスに宣言(.h)と実装(.m)を追加するObj-Cのミラクル機能だよ。
例えばNSArrayにobjectAtIndexSafety:を追加する。
oreore.h
@interface NSArray (oreore)
- (id) objectAtIndexSafety:(NSUInteger)index;
@end
oreore.m
@implementation NSArray(oreore)
- (id) objectAtIndexSafety:(NSUInteger)index
{
if (index < [self count]) {
return [self objectAtIndex:index];
}
return nil;
}
@end
463デフォルトの名無しさん
2016/09/19(月) 17:58:43.86ID:gQRJTUbC javaスレでメソッドってなに?って聞いてるようなもんだから
みんな釣りとしてスルーしてた。
みんな釣りとしてスルーしてた。
464デフォルトの名無しさん
2016/09/19(月) 18:02:17.52ID:VA/o11o6 Objective-CがsmalltalkとCのハイブリッドなので
僕はカテゴリとかの単語の意味含めてメソッド呼び出しの仕組みとかを理解しやすくするにはsmalltalkを体験すべきだと思うのだけどどう?
僕はカテゴリとかの単語の意味含めてメソッド呼び出しの仕組みとかを理解しやすくするにはsmalltalkを体験すべきだと思うのだけどどう?
465デフォルトの名無しさん
2016/09/19(月) 22:24:00.74ID:KnX9vMV5 >>464
んー、SmalltalkはObj-Cの [ ] の中身だけでコードを全て記述するような感じの言語で、動的性を学ぶのにいいので
「Smalltalkを体験すべき」っていうのには大筋では賛成。こちら↓はその際の参考まで。
▼Smalltalkをちょっとかじってみたい人のための、チュートリアルまとめ
http://qiita.com/sumim/items/6bed17961bd57daf88a3
でもカテゴリはSmalltalkでは対応するのはトレイトだし、Smalltalkでカテゴリはプロトコルの意味でも使われたり
そのプロトコルもObj-Cのプロトコルとは(名前の由来にはなっているけれど)別物だったりと食い違いもあり
「メソッド呼び出しの仕組み」はともかく、こと「単語(用語)の意味」を知る目的では必ずしもお薦めできない。
んー、SmalltalkはObj-Cの [ ] の中身だけでコードを全て記述するような感じの言語で、動的性を学ぶのにいいので
「Smalltalkを体験すべき」っていうのには大筋では賛成。こちら↓はその際の参考まで。
▼Smalltalkをちょっとかじってみたい人のための、チュートリアルまとめ
http://qiita.com/sumim/items/6bed17961bd57daf88a3
でもカテゴリはSmalltalkでは対応するのはトレイトだし、Smalltalkでカテゴリはプロトコルの意味でも使われたり
そのプロトコルもObj-Cのプロトコルとは(名前の由来にはなっているけれど)別物だったりと食い違いもあり
「メソッド呼び出しの仕組み」はともかく、こと「単語(用語)の意味」を知る目的では必ずしもお薦めできない。
466デフォルトの名無しさん
2016/09/20(火) 09:47:32.51ID:noK0zumc 似てるってだけでハイブリッド(キリっ)とか
頭湧いてんな
頭湧いてんな
467デフォルトの名無しさん
2016/09/20(火) 21:20:03.95ID:cQ8uMGBS ObjcのハイブリッドはSmalltailkのコンセプトとC言語の処理系のハイブリッドのことだと思うんだけど
そういう意味ならSmalltalkの思想やコンセプトを理解する価値はある気がする。
でもObjcはそんなに難しい言語でもないしそこまでする必要は無い気もする。
そういう意味ならSmalltalkの思想やコンセプトを理解する価値はある気がする。
でもObjcはそんなに難しい言語でもないしそこまでする必要は無い気もする。
468デフォルトの名無しさん
2016/09/21(水) 15:26:58.49ID:S1SFikQD objcらしさはトレンドが早いから今更Smalltalkはどうなのよ
原典の一つではあろうがobjcで学ぶべきじゃね
原典の一つではあろうがobjcで学ぶべきじゃね
469デフォルトの名無しさん
2016/09/25(日) 19:25:14.70ID:+js0BgEk いつの間にか NSArray<NSString *> *names; みたいな記法が可能に。
470デフォルトの名無しさん
2016/09/25(日) 19:39:59.75ID:sZGCwOzX ジェネリクスは去年からだろ
今年はクラス変数(Type Property)が追加された
今年はクラス変数(Type Property)が追加された
471デフォルトの名無しさん
2016/10/06(木) 22:17:15.09ID:Ppn//x8R すいません、objective-c触れたばっかで全然勝手が分からないんですが、
void play_sound(NSString* str)
{
NSSound* sound = [NSSound soundNamed : str];
[sound play];
}
int main()
{
play_sound(@
void play_sound(NSString* str)
{
NSSound* sound = [NSSound soundNamed : str];
[sound play];
}
int main()
{
play_sound(@
472デフォルトの名無しさん
2016/10/06(木) 22:19:20.70ID:Ppn//x8R473デフォルトの名無しさん
2016/10/07(金) 00:37:46.25ID:yL88npXy 2chのバグだろ
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" を、\" とエスケープすれば、どうだろう?
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" を、\" とエスケープすれば、どうだろう?
474デフォルトの名無しさん
2016/10/07(金) 00:40:22.25ID:X6DZ7p2C 普通"に実体参照でエスケープして書き込むだろ
475デフォルトの名無しさん
2016/10/07(金) 00:46:39.49ID:X6DZ7p2C476デフォルトの名無しさん
2016/10/07(金) 00:48:31.69ID:A3oY7q9i test1
477デフォルトの名無しさん
2016/10/07(金) 00:49:01.66ID:A3oY7q9i478デフォルトの名無しさん
2016/10/07(金) 00:55:53.92ID:UYUTVtAf >>475
回答あざっす
pool処理ってこんな感じでいいんでしょうか?
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
/--------ここに処理を記述---------/
[pool release];
回答あざっす
pool処理ってこんな感じでいいんでしょうか?
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
/--------ここに処理を記述---------/
[pool release];
479デフォルトの名無しさん
2016/10/07(金) 00:58:48.10ID:X6DZ7p2C >>478
@autoreleasepool{
}
でいいよ
てかsoundならallocでイニシャライズして好きなタイミングでリリースした方がいいんじゃない
以前のOSではNSSoundのautorelease不具合あったし
@autoreleasepool{
}
でいいよ
てかsoundならallocでイニシャライズして好きなタイミングでリリースした方がいいんじゃない
以前のOSではNSSoundのautorelease不具合あったし
480デフォルトの名無しさん
2016/10/07(金) 01:04:41.28ID:UYUTVtAf481デフォルトの名無しさん
2016/10/07(金) 01:11:24.99ID:UYUTVtAf openglいじってて、サウンドもつけたくなり
でもそれだとCocoaFramework必要になって
ほんとはcで済ませたかったんですが、objective-cじゃないとCocoa使えないからということで
ほんとに無知ですんません
でもそれだとCocoaFramework必要になって
ほんとはcで済ませたかったんですが、objective-cじゃないとCocoa使えないからということで
ほんとに無知ですんません
482デフォルトの名無しさん
2016/10/07(金) 01:19:10.67ID:X6DZ7p2C >>480
NSSoundDelegateで再生終了時のdidFinishPlayingを拾ってリリーすれば良いんじゃない
-(void)playSE{
NSString*path= @"音パス";
NSSound *se = [[NSSound alloc] initWithContentsOfFile:path byReference:YES];
[se setDelegate:self];
[se play];
}
-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool{
[sound release];
}
NSSoundDelegateで再生終了時のdidFinishPlayingを拾ってリリーすれば良いんじゃない
-(void)playSE{
NSString*path= @"音パス";
NSSound *se = [[NSSound alloc] initWithContentsOfFile:path byReference:YES];
[se setDelegate:self];
[se play];
}
-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool{
[sound release];
}
483デフォルトの名無しさん
2016/10/07(金) 01:20:54.04ID:UYUTVtAf >>482
凄く分かりやすいです!本当にありがとうございます
凄く分かりやすいです!本当にありがとうございます
484デフォルトの名無しさん
2016/10/07(金) 01:22:54.60ID:X6DZ7p2C ゲームかなんか?
それならエフェクト追加とかミキサーで多重再生とかしたくなるだろうから
AudioUnitでやると便利だよ
それならエフェクト追加とかミキサーで多重再生とかしたくなるだろうから
AudioUnitでやると便利だよ
485デフォルトの名無しさん
2016/10/07(金) 01:29:40.94ID:UYUTVtAf >>484
ゲームってわけじゃないんですが
一応ゲーム作るなら情報豊富なdxlib使おうかと思いますし・・・
ほんとに軽くSEほしいなぐらいなんで
でも一応検討します
回答わかりやすかったです
何回も言ってますけどw本当にありがとうございます
ゲームってわけじゃないんですが
一応ゲーム作るなら情報豊富なdxlib使おうかと思いますし・・・
ほんとに軽くSEほしいなぐらいなんで
でも一応検討します
回答わかりやすかったです
何回も言ってますけどw本当にありがとうございます
486デフォルトの名無しさん
2016/10/07(金) 01:33:04.00ID:X6DZ7p2C そこはdirectXなのかよwww
ドザーなのか
ドザーなのか
487デフォルトの名無しさん
2016/10/07(金) 01:35:22.75ID:UYUTVtAf488デフォルトの名無しさん
2016/10/07(金) 01:38:54.58ID:UYUTVtAf iOSだと大量のリファレンスそれも日本語の(英語でも一応なんとかなりますけど・・・
があるのにOSXのほうはなかなか見つけるのが難しくて苦労してます(探し方わるいのかもしれんけど)
があるのにOSXのほうはなかなか見つけるのが難しくて苦労してます(探し方わるいのかもしれんけど)
489デフォルトの名無しさん
2016/10/12(水) 21:41:24.49ID:fMOTdRji クラスを配列で作りたいんだけどこれって大丈夫?
@interface myclass : NSObject{
int kazu;
}
-(void)set : (int) i;
-(void)print;
@end
@implementation myclass
-(void)set : (int) i
{
self->kazu = i;
}
-(void)print
{
printf(”%d\n”, kazu);
}
@end
int main()
{
@autoreleasepool
{
myclass* obj[3];
for(int i=0; i<3; ++i)
obj[i] = [ [myclass alloc]init ];
for(int i=0; i<3; ++i)
[obj[i]set : i*10];
for(int i=0; i<3; ++i)
[obj[i]print];
}
return 0;
}
@interface myclass : NSObject{
int kazu;
}
-(void)set : (int) i;
-(void)print;
@end
@implementation myclass
-(void)set : (int) i
{
self->kazu = i;
}
-(void)print
{
printf(”%d\n”, kazu);
}
@end
int main()
{
@autoreleasepool
{
myclass* obj[3];
for(int i=0; i<3; ++i)
obj[i] = [ [myclass alloc]init ];
for(int i=0; i<3; ++i)
[obj[i]set : i*10];
for(int i=0; i<3; ++i)
[obj[i]print];
}
return 0;
}
490デフォルトの名無しさん
2016/10/12(水) 23:42:00.99ID:GIO3EA35 構造体と配列はARCが効かないからメモリーリークするんじゃなかったっけ?
autoreleasepool抜けた後
-(void) dealloc {} ちゃんと呼ばれる?
autoreleasepool抜けた後
-(void) dealloc {} ちゃんと呼ばれる?
491デフォルトの名無しさん
2016/10/13(木) 00:28:51.23ID:d0+eFHBu492デフォルトの名無しさん
2016/10/13(木) 00:34:33.56ID:d0+eFHBu 間違えた
[obj[i] dealloc];ってことになるのか?
[obj[i] dealloc];ってことになるのか?
493デフォルトの名無しさん
2016/10/13(木) 00:41:30.99ID:5gkYrLUa いや、やるとしても
[obj[i] release];
でしょ
メモリー管理のポリシー的にdeallocメソッドは滅多なことでは使わない
[obj[i] release];
でしょ
メモリー管理のポリシー的にdeallocメソッドは滅多なことでは使わない
494デフォルトの名無しさん
2016/10/13(木) 00:45:19.72ID:d0+eFHBu 了解、あんまこういうの載ってるとこなくて質問させてもらいました
ありがと
ありがと
495デフォルトの名無しさん
2016/10/13(木) 00:47:40.63ID:d0+eFHBu ってかこういう処理ってobj-cで普通どうやるの?
C++だったらvectorにぶち込むとか
javaだったらガンガンnewしちゃうけど・・・
C++だったらvectorにぶち込むとか
javaだったらガンガンnewしちゃうけど・・・
496デフォルトの名無しさん
2016/10/13(木) 00:54:16.14ID:d0+eFHBu (別にvectorにぶち込まなくても普通に配列で作れたわ 恥ずかしい・・・)
497デフォルトの名無しさん
2016/10/13(木) 01:30:12.49ID:TfTkEqcE >>489
大丈夫。
myclass* obj[3]; //ポインタ型の配列 省略されてるがstrong
ARC有効なのでmainのスコープを抜けた時に解放される。
@autoreleasepoolは要らない。
大丈夫。
myclass* obj[3]; //ポインタ型の配列 省略されてるがstrong
ARC有効なのでmainのスコープを抜けた時に解放される。
@autoreleasepoolは要らない。
498デフォルトの名無しさん
2016/10/13(木) 01:33:33.88ID:TfTkEqcE ARCだからreleaseは呼べないので、解放されるかチェックするなら
@implementation myclass
- (void)dealloc
{
NSLog(@“%s”, __func__);
}
@end
@implementation myclass
- (void)dealloc
{
NSLog(@“%s”, __func__);
}
@end
499デフォルトの名無しさん
2016/10/13(木) 01:55:06.63ID:d0+eFHBu500デフォルトの名無しさん
2016/10/13(木) 01:59:27.13ID:d0+eFHBu あと、ARCなしだったら
-(void)deallocに[super dealloc];必要だよね
-(void)deallocに[super dealloc];必要だよね
501デフォルトの名無しさん
2016/10/13(木) 02:02:15.85ID:d0+eFHBu >499
ごめん変なこと書いた
objective-c始めたばっかだからおかしなこと書いてスマソ
ってことはARC効かなかったら手動でreleaseしないといけないってことだよね
[obj[i] release];
ごめん変なこと書いた
objective-c始めたばっかだからおかしなこと書いてスマソ
ってことはARC効かなかったら手動でreleaseしないといけないってことだよね
[obj[i] release];
502デフォルトの名無しさん
2016/10/13(木) 02:11:12.99ID:TfTkEqcE >>495
これで動作確認してみたよ。(ARC)
-deallocも呼ばれる。
int main()
{
myclass* obj[3];
for(int i=0; i<3; ++i) {
obj[i] = [ [myclass alloc]init ];
[obj[i]set : i*10];
[obj[i]print];
}
return 0;
}
>>500
MRCなら[super dealloc]; を末尾で呼びます。
>>501
手動でretain, releaseなんだけど、init系はretain済みを返すとか、
コンビニエンスコンストラクタはautorelease済みを返すとか、
ViewにaddSubviewしたらretainされるとか、いろいろややこしいかもよw
あと、Xcodeのテンプレではmain()に@autoreleasepoolがあるけど、
ARCなら上記のとおり解放されるし、どのみちmainを抜けたらアプリ終了で解放されるんだよね。
これで動作確認してみたよ。(ARC)
-deallocも呼ばれる。
int main()
{
myclass* obj[3];
for(int i=0; i<3; ++i) {
obj[i] = [ [myclass alloc]init ];
[obj[i]set : i*10];
[obj[i]print];
}
return 0;
}
>>500
MRCなら[super dealloc]; を末尾で呼びます。
>>501
手動でretain, releaseなんだけど、init系はretain済みを返すとか、
コンビニエンスコンストラクタはautorelease済みを返すとか、
ViewにaddSubviewしたらretainされるとか、いろいろややこしいかもよw
あと、Xcodeのテンプレではmain()に@autoreleasepoolがあるけど、
ARCなら上記のとおり解放されるし、どのみちmainを抜けたらアプリ終了で解放されるんだよね。
503デフォルトの名無しさん
2016/10/13(木) 02:18:38.99ID:d0+eFHBu >>502
ほんとに助かります ありがと
ってか素直にxcode使いますw
OSXとiOS意外の環境にObjective-c流行らないのって
これ関係だよね(メモリの管理)
GNUstepも確か手動でしょ?メモリ解放
むしろなれてるcの方がメモリ管理楽に感じる(小声
ほんとに助かります ありがと
ってか素直にxcode使いますw
OSXとiOS意外の環境にObjective-c流行らないのって
これ関係だよね(メモリの管理)
GNUstepも確か手動でしょ?メモリ解放
むしろなれてるcの方がメモリ管理楽に感じる(小声
504デフォルトの名無しさん
2016/10/13(木) 02:32:47.05ID:TfTkEqcE505デフォルトの名無しさん
2016/10/14(金) 14:48:31.14ID:v9j5dzmv 教えてください。
詳解Objective-C2.0第3版を読んでいます。ランタイムシステムってのが出てくるんですけど、これはアプリ1つに一個起動されるのでしょうか?それとも、OSの起動毎に一個起動されるのでしょうか?
詳解Objective-C2.0第3版を読んでいます。ランタイムシステムってのが出てくるんですけど、これはアプリ1つに一個起動されるのでしょうか?それとも、OSの起動毎に一個起動されるのでしょうか?
506デフォルトの名無しさん
2016/10/14(金) 14:59:05.79ID:v9j5dzmv Objective-Cのランタイムってのは<objc/runtime.h>に定義されている、Cの関数郡って事らしい。木下本に記載があるらしい。たとえば、objc_setAssociatedObject() / objc_getAssociatedObject() ってのがあるって事だ。
507デフォルトの名無しさん
2016/10/14(金) 15:32:44.99ID:lawu0WKC >>505
これ読んでみて
Objective-Cランタイムシステムは、すべてのクラスオブジェクトに対してinitializeメッセージを送信します。
各クラスは、ほかのいずれのメッセージよりも先にこのメッセージを受け取ります。
その結果、クラスの使用に先立ってクラス独自のランタイム環境を準備できます。
https://developer.apple.com/jp/documentation/Multithreading.pdf
これ読んでみて
Objective-Cランタイムシステムは、すべてのクラスオブジェクトに対してinitializeメッセージを送信します。
各クラスは、ほかのいずれのメッセージよりも先にこのメッセージを受け取ります。
その結果、クラスの使用に先立ってクラス独自のランタイム環境を準備できます。
https://developer.apple.com/jp/documentation/Multithreading.pdf
508デフォルトの名無しさん
2016/10/14(金) 23:13:42.95ID:lawu0WKC >>505
まずアプリごとに別プロセスであって、その上でスレッドを実行している。
ランタイム自体はCの関数群なので、アプリがマルチスレッドの場合はスレッドごとにスタックを確保し実行される。
なので、ランタイムはアプリに1個ではなくスレッドに1個ということだね。
スレッドごとにプライオリティが違うのでランタイムの実行速度も違うわけだし。
あんまり詳しく無いけどこんな感じだと思います。
まずアプリごとに別プロセスであって、その上でスレッドを実行している。
ランタイム自体はCの関数群なので、アプリがマルチスレッドの場合はスレッドごとにスタックを確保し実行される。
なので、ランタイムはアプリに1個ではなくスレッドに1個ということだね。
スレッドごとにプライオリティが違うのでランタイムの実行速度も違うわけだし。
あんまり詳しく無いけどこんな感じだと思います。
509デフォルトの名無しさん
2016/10/15(土) 08:39:31.98ID:KMpEggfz510デフォルトの名無しさん
2016/10/15(土) 08:59:48.13ID:dlnFVU64 なんかおかしくないかと思ったが、質問者が納得したならいいか
511デフォルトの名無しさん
2016/10/15(土) 09:12:48.51ID:3zvDUrQk ランタイムって起動時にクラス登録したりメソッド登録したりして、
メソッド呼び出し時にメソッド解決するためのシステムやろ。
アプリに1つずつじゃないの。
メソッド呼び出し時にメソッド解決するためのシステムやろ。
アプリに1つずつじゃないの。
512508
2016/10/15(土) 09:29:45.08ID:dk6au9gQ スレッドに1個というのは、スレッド毎にスタックメモリを確保してるという意味で、
ただの関数なんだからそうなるよね。
ソースまだ読んで無いけどw
ただの関数なんだからそうなるよね。
ソースまだ読んで無いけどw
513デフォルトの名無しさん
2016/10/15(土) 10:10:00.08ID:dk6au9gQ 時間ある人読んでみて。違ったら教えてw
ダイナミックObjective-C
http://news.mynavi.jp/column/objc/014/
ソース
http://opensource.apple.com/source/objc4/objc4-267/runtime/
ダイナミックObjective-C
http://news.mynavi.jp/column/objc/014/
ソース
http://opensource.apple.com/source/objc4/objc4-267/runtime/
514デフォルトの名無しさん
2016/10/15(土) 10:11:59.38ID:KMpEggfz >>511
根拠やソースをどうぞ!
ランタイムって言葉は、乱用されてるので、誤解を招きやすいよねぇ。
Visual Basicランタイムてのは、実態はdll(osxでいうとdylib)で、具体的には
Msvbvm60.dll
vb6jp.dll
Stdole2.tlb
Oleaut32.dll
Olepro32.dll
Comcat.dll
Asycfilt.dll
Ctl3d32.dll
ですよねぇ。
同様に、Obj-Cのランタイムは、libobjc.A.dylibってことですね。
Objective-C Runtime Reference - Developer - Apple
Objective-C runtime library support functions are implemented in the shared library found at /usr/lib/libobjc.A.dylib.
根拠やソースをどうぞ!
ランタイムって言葉は、乱用されてるので、誤解を招きやすいよねぇ。
Visual Basicランタイムてのは、実態はdll(osxでいうとdylib)で、具体的には
Msvbvm60.dll
vb6jp.dll
Stdole2.tlb
Oleaut32.dll
Olepro32.dll
Comcat.dll
Asycfilt.dll
Ctl3d32.dll
ですよねぇ。
同様に、Obj-Cのランタイムは、libobjc.A.dylibってことですね。
Objective-C Runtime Reference - Developer - Apple
Objective-C runtime library support functions are implemented in the shared library found at /usr/lib/libobjc.A.dylib.
515デフォルトの名無しさん
2016/10/15(土) 10:17:34.69ID:KMpEggfz >>511
この人は多分こんな誤解をしている。
ランタイムシステムっていうプロセスがアプリが起動される度にfork(生成されて)されて、「xxxやyyyって仕事をしている」
だから、アプリが複数起動されると、メモリはランタイムシステムで溢れかえる。
androidでは、アプリが起動される度にVMがforkされる様に。
この人は多分こんな誤解をしている。
ランタイムシステムっていうプロセスがアプリが起動される度にfork(生成されて)されて、「xxxやyyyって仕事をしている」
だから、アプリが複数起動されると、メモリはランタイムシステムで溢れかえる。
androidでは、アプリが起動される度にVMがforkされる様に。
516デフォルトの名無しさん
2016/10/15(土) 10:26:13.78ID:KMpEggfz こんな理解で、ええんでっしゃろか?
libobjc.A.dylib ― obj-c runtime
libobjc.B.dylib ― core foundation
libobjc.A.dylib ― obj-c runtime
libobjc.B.dylib ― core foundation
517デフォルトの名無しさん
2016/10/15(土) 10:32:53.00ID:3zvDUrQk なんでプロセスの話になってんの。お前が何を言ってるのかまるで分からない。
518デフォルトの名無しさん
2016/10/15(土) 11:01:56.05ID:fVu0gjAI obj-c runtimeは、dylibとして実装されている。通常、OS起動時に仮装メモリ上にロードされるので、アプリ起動時に新たにロードされることはない。
Cocoa/Foundationにリンクしてコンパイルされたバイナリがメモリ上にロードされると、仮装メモリ上のdylibイメージがプロセスのメモリ空間にマップされ、objc runtimeとして利用出来るようになる。
ランタイムの初期化はプロセス毎だが、独立したプロセスとして実装されている訳ではない。
Cocoa/Foundationにリンクしてコンパイルされたバイナリがメモリ上にロードされると、仮装メモリ上のdylibイメージがプロセスのメモリ空間にマップされ、objc runtimeとして利用出来るようになる。
ランタイムの初期化はプロセス毎だが、独立したプロセスとして実装されている訳ではない。
519デフォルトの名無しさん
2016/10/15(土) 11:28:07.92ID:KMpEggfz >>518
なんがと!
メモリへのマップはshmat(shared memory attatch)で行われるって理解でOK?
man shmat
BSD System Calls Manual SHMAT(2)
DESCRIPTION
shmat() maps the shared memory segment associated with the shared memory
identifier shmid into the address space of the calling process.
なんがと!
メモリへのマップはshmat(shared memory attatch)で行われるって理解でOK?
man shmat
BSD System Calls Manual SHMAT(2)
DESCRIPTION
shmat() maps the shared memory segment associated with the shared memory
identifier shmid into the address space of the calling process.
520デフォルトの名無しさん
2016/10/15(土) 14:20:50.64ID:5BWmrAPA それはプロセス間共有メモリで別物かと。
キチンと調べるならMACH-O binaryとかかな?
http://www.m4b.io/reverse/engineering/mach/binaries/2015/03/29/mach-binaries.html
記憶ではApple のmach-O file format referenceとかあったはずだが検索で見つからない。
キチンと調べるならMACH-O binaryとかかな?
http://www.m4b.io/reverse/engineering/mach/binaries/2015/03/29/mach-binaries.html
記憶ではApple のmach-O file format referenceとかあったはずだが検索で見つからない。
521デフォルトの名無しさん
2016/10/16(日) 10:35:31.41ID:FpSgdyT6 基本的にクラス(インスタンス)のプロセスを動的に管理するOSのようなものが
Objective-Cのアプリが動作している間中必要なので
ずっとそこに基本管理プログラムとして居続けてるかと。
(アプリが動作してない時もアプリが起動した途端にいるから常駐してる)
Objective-Cのアプリが動作している間中必要なので
ずっとそこに基本管理プログラムとして居続けてるかと。
(アプリが動作してない時もアプリが起動した途端にいるから常駐してる)
522デフォルトの名無しさん
2016/10/16(日) 11:28:22.44ID:xF5nqLB3 >>521
意味不明!
クラス(インスタンス)のプロセスってなに?
プロセスを動的に管理するOSのようなものって?
ずっとそこに基本管理プログラムとして居続けてるかと?
一体何が、いると思ってるんだ?
意味不明!
クラス(インスタンス)のプロセスってなに?
プロセスを動的に管理するOSのようなものって?
ずっとそこに基本管理プログラムとして居続けてるかと?
一体何が、いると思ってるんだ?
523デフォルトの名無しさん
2016/10/16(日) 11:50:42.07ID:3UpkNFG/ 普通、コンパイル言語のランタイムというとその言語の機能を実現するための低レベルのライブラリの事。
これらのライブラリを呼ぶコードはコンパイラが生成するが、ユーザーが明示的にこれらを呼ぶ事はない。
また、ユーザーのプログラムのmainに飛ぶ前にこのランタイム環境は初期化され、普通は単に
アプリケーションプロセスの一部でしかない。
例えばObjective-Cのランタイムにはダイナミックなメッセージングを実現するためのAPIが含まれる。
Objective-C Runtime
https://developer.apple.com/reference/objectivec/1657527-objective_c_runtime
これらのライブラリを呼ぶコードはコンパイラが生成するが、ユーザーが明示的にこれらを呼ぶ事はない。
また、ユーザーのプログラムのmainに飛ぶ前にこのランタイム環境は初期化され、普通は単に
アプリケーションプロセスの一部でしかない。
例えばObjective-Cのランタイムにはダイナミックなメッセージングを実現するためのAPIが含まれる。
Objective-C Runtime
https://developer.apple.com/reference/objectivec/1657527-objective_c_runtime
524デフォルトの名無しさん
2016/10/16(日) 13:08:49.80ID:vrM29RHh PCあぷり屋さんって、どのようにしてアプリがCPUで実行されてるのか知らない人多いよねたぶん
525デフォルトの名無しさん
2016/10/16(日) 16:25:18.60ID:xF5nqLB3 >>524
では、どの様にして、知る事になりました?
何か良い教科書あります?
俺が良かったのは、パタヘネ、最初の数章でもすげー役立つ。
それから、オブジェクト指向でなぜつくるのか。
良書があれば、紹介よろしくお願いします。
では、どの様にして、知る事になりました?
何か良い教科書あります?
俺が良かったのは、パタヘネ、最初の数章でもすげー役立つ。
それから、オブジェクト指向でなぜつくるのか。
良書があれば、紹介よろしくお願いします。
526デフォルトの名無しさん
2016/10/16(日) 18:02:27.53ID:LrWAw6Fi このランタイム質問者、ちょっと頭変だな。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 ★2 [蚤の市★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★7 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 ★2 [蚤の市★]
- 公用車カーナビのNHK受信料「全額免除を」 千葉市議会、国に制度創設求める意見書可決 [少考さん★]
- 【朗報】南鳥島のレアアース、中国産の「20倍の純度」青山繁晴氏「日本は資源大国」日本復活のファンファーレが鳴り響く! [673057929]
- 愛国者「釘を使わない日本独自の伝統工法スゴイ!」X民「それ中国起源ですよ」→批判殺到 [834922174]
- 【朗報】「愛国保守党」の公約、ガチで日本再生の為ならアリだと話題に
- おもらし
- 👊😅👊三☁😶‍🌫三⛅🏡
- コーヒー、来年3月から30パーセント値上げへ [709039863]
